Проблема с виджетами DatePicker и DynamicFormWidget

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
long399
Сообщения: 96
Зарегистрирован: 2019.08.13, 08:03
Откуда: г. Новосибирск

Проблема с виджетами DatePicker и DynamicFormWidget

Сообщение long399 »

Всех приветствую!

Столкнулся с проблемой, которую никак не получается разрешить. Я в своем проекте использую виджет динамической формы \wbraganca\dynamicform\DynamicFormWidget. С обычными текстовыми и числовыми полями, которые обернуты этим виджетом, проблем не возникает.

Но например, виджет \kartik\date\DatePicker перестает нормально работать после добавления хотя бы одного нового элемента. Я так понимаю, что для полей виджета не подгружаются различные скрипты. Перестает работать валидация, не всплывает календарик при нажатии на поле.

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

DynamicFormWidget::begin([
    'widgetContainer' => 'dynamicform_wrapper', // required: only alphanumeric characters plus "_" [A-Za-z0-9_]
    'widgetBody' => '.container-items', // required: css class selector
    'widgetItem' => '.item', // required: css class
    'limit' => 4, // the maximum times, an element can be cloned (default 999)
    'min' => 1, // 0 or 1 (default 1)
    'insertButton' => '.add-item', // css class
    'deleteButton' => '.remove-item', // css class
    'model' => $model[0],
    'formId' => 'dynamic-form',
    'formFields' => [
        'number',
        'name',
        'date'
    ],
]);

echo $form->field($model, "[{$index}]number")->input('number'); // good
echo $form->field($model, "[{$index}]name")->textInput(['maxlength' => true]); // good

echo $form->field($model, "[$index]date")->widget(\kartik\date\DatePicker::class, [
    'type' => \kartik\date\DatePicker::TYPE_COMPONENT_PREPEND,
    'attribute' => 'date',
    'readonly' => false,
    'pluginOptions' => [
        'autoclose' => true,
        'format' => 'dd.mm.yyyy',
        'endDate' => date('+1 day'),
        'todayHighlight' => true,
    ],
    'options' => [
        'placeholder' => 'Выберите дату...',
        'id' => "date_$index",
        'autocomplete' => 'off',
    ],
]); // bad

DynamicFormWidget::end();
Эта проблема обсуждалась на github. Попробовал те решения, что там предлагаются, но не помогло.

Подскажите, как-то можно подружить DynamicFormWidget и DatePicker?
long399
Сообщения: 96
Зарегистрирован: 2019.08.13, 08:03
Откуда: г. Новосибирск

Re: Проблема с виджетами DatePicker и DynamicFormWidget

Сообщение long399 »

Если использовать виджет \kidzen\dynamicform\DynamicFormWidget ситуация становится получше. Валидация работает, но некоторые события так и не прикрепляются к частям поля, например к кнопке очистки даты. Т.е. дата не очищается при нажатии на эту кнопку, ее приходится очищать с клавиатуры.
long399
Сообщения: 96
Зарегистрирован: 2019.08.13, 08:03
Откуда: г. Новосибирск

Re: Проблема с виджетами DatePicker и DynamicFormWidget

Сообщение long399 »

Подскажите, пожалуйста, можно ли как-то "вручную" инициировать для виджета \katrik\date\DatePicker полную инициализацию обработчиков событий? Точно такую же, которая происходит при начальной загрузке страницы.

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