yii2-multiple-input

Выкладываем свои наработки
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

yii2-multiple-input

Сообщение unclead »

Добрый день!

В рамках работы над своими проектами возникала необходимость управлением несколькими значениями для одного поля модели.
Например, есть поле в БД которое содержит json. Например, расписание работы чего-либо. Либо же в профиле пользователя надо иметь возможность указывать несколько телефонов или email-ов.

После ряда доработок решил выложить данное расширение в общий доступ т.к. я думаю, что моя задача не уникальная и многие из вас сталкивались с подобной задачей.

Github
Packagist

На данный момент в документации описаны основные случаи использования.
Подробная документация по конфигурации виджета находится в стадии доработки

Приветствуются замечания, предложения и пулл реквесты.

Update
Сделал первый стабильный релиз.
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Выпущен релиз 1.0.1

Изменения
  • Добавилась поддержка виджетов в качестве типа колонки.
  • Добавились js события
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Выпущена версия 1.0.2 с минорными доработками:

- возможность настраивать шапку ячеек таблицы
- добавлена минифицированная версия js

Если вы используете виджет и у вас есть предложения или вы нашли баги, то с радостью приму PR или issue
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Выпущена версия 1.0.4:
  • добавлена возможность задавать параметры атрибута на клиенте. Например, удобно когда виджет используется без привязки к модели AR
  • исправлен баг с отображением dropDownList и аналогичных полей ввода. Ранее некорректно выводилось сохраненное значение и не работали некоторые виджеты
Если вы используете виджет и у вас есть предложения или вы нашли баги, то с радостью приму PR или issue
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Выпущена версия 1.1.0:
  • добавлена поддержка inline сообщений об ошибках валидации
  • переименованы js события и добавлены новые
  • исправлена логика использования defaultValue
Обратитесь к инструкции по обновлению при переходе на новую версию с более старых.

Если вы используете виджет и у вас есть предложения или вы нашли баги, то с радостью приму PR или issue
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Выпущена версия 1.2.0:
  • добавлен TabularInput виджет, который основан на MultipleInput, но больше подходит для управления несколькими моделями, а не значением конкретного поля
  • изменена структура кода для дальнейшего развития виджета
  • исправлен ряд ошибок связанных с выводом данных
Более подробную информацию можно получить в офф. докуметнации виджета и в примерах кода.

Если вы используете виджет и у вас есть предложения или вы нашли баги, то с радостью приму PR или issue
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Выпущена версия 1.2.2:
  • добавлена поддержка анонимной функции в атрибуте items
  • улучшена работа с radio и checkbox
  • исправлены недочеты в css
Более подробную информацию можно получить в офф. докуметнации виджета и в примерах кода.

Если вы используете виджет и у вас есть предложения или вы нашли баги, то с радостью приму PR или issue
xrays72
Сообщения: 2
Зарегистрирован: 2015.06.18, 14:31

Re: yii2-multiple-input

Сообщение xrays72 »

Здравствуйте, пожалуйста, подскажите как можно данные из вашего виджета сохранять в формате json в БД mysql и как потом их от туда получать, чтобы в виджете они нормально отображались. Хотелось бы увидеть куски кода и желательно для виджета с несколькими колонками.
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

В модели используете поле, например, settings. Работаете с ним как с массивом. Перед сохранением в БД делаете json_encode, после выборки данных из БД в методе afterFind делаете json_decode и дальше работаете с полем как с обычным массивом.
В данном случае это никак не связанно с логикой работы виджета.
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Обновление виджета. Текущая версия 1.2.5:
  • Убрана зависимостьт от yii2-bootstrap
  • Добавлена поддержка пустого списка
  • Улучшены js события.
  • Исправлен ряд багов (подробнее про них можно узнать в CHANGELOG)
Более подробную информацию можно получить в офф. докуметнации виджета и в примерах кода.

Если вы используете виджет и у вас есть предложения или вы нашли баги, то с радостью приму PR или issue
Sasha Masych
Сообщения: 1
Зарегистрирован: 2016.04.09, 14:43

Re: yii2-multiple-input

Сообщение Sasha Masych »

Здравствуйте. Подскажите пожалуйста, если я использую ваш виджет в crud, разве после json_decode в методе afterFind значения не должны подставиться при редактировании? Потому что всё, что происходит, это появляются поля в нужном количестве, но они пусты.
Mickey
Сообщения: 1
Зарегистрирован: 2016.06.16, 14:58

Re: yii2-multiple-input

Сообщение Mickey »

Добавьте возможность добавлять новые кнопки, кроме add и remove
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Добавьте возможность добавлять новые кнопки, кроме add и remove
просто кнопки без какой либо логики? Вы хотите реализовать свою кастомную логику? Т.е. рядом с кнопокй добавить/удалить еще будет кнопка или как? А вообще для таких целей лучше создать issue на гитхабе https://github.com/unclead/yii2-multiple-input/issues
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Выпущен релиз 2.0.0

Изменения
  • Опция limit переименована в max
  • Изменился namespace с unclead\widgets на yii\multipleinput
  • Исправлена ошибка при использовании виджета в связке с отношениями AR
  • Добавлен js метод для получения/установки параметров виджета
  • Мелкие улучшения и фиксы
С момента последнего поста прошло много времени и было выпущено много версий.
Полный список версий и изменений доступен здесь: https://github.com/unclead/yii2-multiple-input/releases
makeloo86
Сообщения: 55
Зарегистрирован: 2016.09.07, 12:35

Re: yii2-multiple-input

Сообщение makeloo86 »

Здравствуйте!
Unclead спасибо за Ваш виджет! Очень удобная штука!
Использую на проекте для возможности выбора языка и уровня владения языком.

Вопрос: Есть ли возможность загрузить в виджет данные из модели, чтобы при Update пользователю не приходилось вводить уже ранее введенные данные.

В данный момент на странице create виджет выглядит так:

Код: Выделить всё

 <?=
                        $form->field($modelGuideLanguage, 'languages')->widget(MultipleInput::className(), [
                            'max'               => 6,
                            'min'               => 1, // should be at least 2 rows
                            'allowEmptyList'    => false,
                            'enableGuessTitle'  => true,
                            'addButtonPosition' => MultipleInput::POS_ROW, // show add button in the header
                            'columns' => [
                                [
                                    'name'  => 'language_id',
                                    'type'  => 'dropDownList',
                                    'title' => Yii::t('app','Language you can speak'),
                                    'defaultValue' => false,
                                    'items' => ArrayHelper::map($allLanguages,'id','name'),
                                    'options' => [
                                        'prompt'=>'',
                                    ],

                                ],
                                [
                                    'name'  => 'level',
                                    'type'  => 'dropDownList',
                                    'title' => Yii::t('app','Your level'),
                                    'defaultValue' => false,
                                    'items' => [
                                        '1'=>Yii::t('app','I can speak simple'),
                                        '2'=>Yii::t('app','I can speak very good'),
                                        '3'=>Yii::t('app','I cant speak at all'),
                                    ],
                                    'options' => [
                                        'prompt'=>'',
                                    ],
                                ],
                            ],

                        ])
                            ->label(false);
                        ?>
Что нужно прописать чтобы загрузить в него данные из модели? Спасибо!
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

А что конкретно не получается? В поле languages у вас должен быть массив с данными вида

Код: Выделить всё

[
    [
        'language_id' => 1,
        'level' => 1
    ],
    [
        'language_id' => 2,
        'level' => 2
    ]
]
 
посмотрите примеры в папке examples
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Давно не писал о новых версиях. На днях выпустил версию 2.4.0.
С версии 2.0.0 были добавлены следующие улучшения:

- возможность использовать клиентскую валидацию active form
- исправлена аякс валидация во вложенных полях
- добавлен еще один тип отображения в виде списка
- исправлено несколько мелких багов

Полный список изменений доступен тут https://github.com/unclead/yii2-multiple-input/releases
Если вы используете виджет и у вас есть предложения или вы нашли баги, то с радостью приму PR или issue
shimbo
Сообщения: 28
Зарегистрирован: 2013.06.14, 17:51

Re: yii2-multiple-input

Сообщение shimbo »

интересуют 2 вопроса:
1. реализация виджета на tab, т.е. когда поля модели выводятся на отдельном табе, ну и, соответственно, добавление/удаление таба (item)
2. вложенность. т.е. возможность для item использовать такой же multiple-input
unclead
Сообщения: 160
Зарегистрирован: 2015.03.13, 19:44

Re: yii2-multiple-input

Сообщение unclead »

Вложенность уже давненько реализована (https://github.com/unclead/yii2-multipl ... d#embedded)

А для вывода в виде табов вам надо реализовать свой Renderer, по аналогии с уже имеющимися, и сделать PR ;)

P.S. лучше такое спрашивать на github потому что на форум я захожу редко и вопросы остаются без ответа
novoselov
Сообщения: 36
Зарегистрирован: 2015.04.18, 15:11

Re: yii2-multiple-input

Сообщение novoselov »

Всем привет.

Есть вопрос, а как правильно обновлять и !сохранять !новые записи?

Пример контроллера из доки больше про обновление существующих записей:

Код: Выделить всё

public function run()
    {
        Yii::setAlias('@unclead-examples', realpath(__DIR__ . '/../'));
        $models = $this->getItems();
        $request = Yii::$app->getRequest();
        if ($request->isPost && $request->post('ajax') !== null) {
            $data = Yii::$app->request->post('Item', []);
            foreach (array_keys($data) as $index) {
                $models[$index] = new Item();
            }
            Model::loadMultiple($models, Yii::$app->request->post());
            Yii::$app->response->format = Response::FORMAT_JSON;
            $result = ActiveForm::validateMultiple($models);
            return $result;
        }
        if (Model::loadMultiple($models, Yii::$app->request->post())) {
            // your magic
        }
        return $this->controller->render('@unclead-examples/views/tabular-input.php', ['models' => $models]);
    }
Ответить