Я хотел бы иметь разные даты в моей форме. К несчастью, только первое поле действует как предполагалось. Вот мой код:
<?php for ($i = 0; $i < 4; $i++) { ?> <div class="row"> <div class="col-md-1"> <?= ($i+1).'.' ?> </div> <div class="col-md-3"> <?= $form->field($pres_rules[$i], 'date')->textInput() ?> </div> <div class="col-md-3"> <?= $form->field($pres_rules[$i], 'time')->widget(TimePicker::className(), [ 'pluginOptions' => [ 'showMeridian' => false, 'defaultTime' => '12:00' ], 'addonOptions' => [ 'asButton' => true, ] ]); ?> </div> </div> <?php } ?>
И результат выглядит так:
Только в первом поле отображается значок часов, на который я могу щелкнуть и выбрать часы. Остальное похоже на обычные текстовые поля, нажатие на значок «часы» не вызывает никаких дальнейших действий. Я могу поместить любую строку, которую я хочу, и поле принимает ее, только первое, рабочее поле отклоняет буквы и т. Д. В чем проблема?
РЕДАКТИРОВАТЬ
Я думаю, проблема в том, что Yii генерирует одинаковые идентификаторы для каждого поля. Как я могу это изменить? Я пробовал все это, но не работает вообще:
$form->field($pres_rules[$i], 'time', ['inputOptions' => ['id' => 'time-'.$i]])->widget(TimePicker::className(), [ 'pluginOptions' => [ 'id' => 'time-' . $i, 'showMeridian' => false, 'defaultTime' => '12:00' ], 'addonOptions' => [ 'asButton' => true, ], 'containerOptions' => [ 'id' => 'time-' . $i, ], 'id' => 'time-'.$i ], ['id' => 'time-'.$i,]);
Вот идентификатор, который я хотел бы изменить
Пожалуйста, см. Документацию о вводе таблиц http://www.yiiframework.com/doc-2.0/guide-input-tabular-input.html, чтобы ваш код выглядел так:
<?php foreach ($pres_rules as $i => $pres_rule): ?> <?= $form->field($pres_rule, "[$i]date")->widget(TimePicker::className(), [ 'pluginOptions' => [ 'showMeridian' => false, 'defaultTime' => '12:00' ], 'addonOptions' => [ 'asButton' => true, ] ]) ?> <?php endforeach; ?>