Расширение Kartik datepicker не работает с формой ввода массива

У меня есть поле формы "dob []" с вводом массива, например

<?php $form = ActiveForm::begin();
for($i=0;$i<= 3;$i++): 
 echo $form->field($model, 'dob[]')->widget(DatePicker::classname(), [
  'options' => ['placeholder' => 'Date Of Birth'],
  'type' => DatePicker::TYPE_INPUT,
  'pluginOptions' => [
      'format' => 'mm/dd/yyyy',
      'autoclose' => true,
  ]
 ]);
 endfor; ?>

 <div class="form-group">
<?= Html::button('Submit', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>

Datepicker работает только с первым полем «dob», но остальная часть поля имеет только формат кнопки datepicker, но календарь не работает.


person vinod    schedule 03.01.2017    source источник


Ответы (1)


Это связано с тем, что javascript не может определить правильные поля ввода после первого. Посмотрите в свой исходный код. Все виджеты имеют одинаковый id и/или имя. Вы должны установить уникальный идентификатор для каждого из сгенерированных виджетов. Кстати, это всегда хороший подход к соответствующим именам данных формы.

Это задокументировано на демонстрационной странице.

Следующее должно работать:

<?php
$form = ActiveForm::begin();
    for ($i=0; $i < 3; $i++) {
        echo $form->field($model, 'date_end')->widget(DatePicker::classname(), [
            'options' => [
                'placeholder' => 'Date Of Birth',
                'name' => 'DOB' .$i,
                'id' => 'DOB-ID' . $i,
            ],
            'type' => DatePicker::TYPE_INPUT,
            'pluginOptions' => [
                'format' => 'mm/dd/yyyy',
                'autoclose' => true,
            ],
        ]);
    }
 ?>

<div class="form-group">
<?= Html::button('Submit', ['class' => 'btn btn-success']) ?>
</div>
<?php ActiveForm::end(); ?>
person R13e    schedule 03.01.2017