我正在使用Activeform,并且需要一个自定义字段来插入日期时间值。
我用kartik DateTimePicker找到了一个可能的解决方案,尽管它比我想要的复杂得多,无论如何我都不知道如何将值放入模型的属性中。
use kartik\datetime\DateTimePicker;
<?php $form = ActiveForm::begin(); ?>
// my working field using kartik library
<?= $form->field($model, 'course')->widget(\kartik\select2\Select2::className(),[
'data' => $data,
'language' => 'it',
'options' => ['placeholder' => 'Select a Course ...'],
'pluginOptions' => [
'allowClear' => true
],
]);?>
// the field I need to implement placing the result in $form->field($model, 'opening_date')
<?php //echo '<label style="position:absolute; top:5px; text-align:left;">Recording Time</label>';
echo '<label>Start Date/Time</label>';
echo DateTimePicker::widget([
'name' => 'opening_date',
'options' => ['placeholder' => 'Select operating time ...'],
'convertFormat' => true,
'pluginOptions' => [
'format' => 'd-M-Y g:i A',
'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true
]
]);
?>
我也接受提供更简单的方式来显示该字段的解决方案。
答案 0 :(得分:0)
如果我正确理解,您是在询问将模型与模型一起使用,而不是静态地调用它,因为您当前正在将值复制到另一个ActiveForm字段,然后提交。如果正确,则可以将小部件用作ActiveForm
字段的一部分,这样就不必将日期插入到单独的模型输入中即可提交和保存,请参见下文。
<?php echo $form->field($model, 'opening_date')->widget(
DateTimePicker::class,
[
'options' => ['placeholder' => 'Select operating time ...'],
'convertFormat' => true,
'pluginOptions' => [
'format' => 'd-M-Y g:i A',
'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true
]
]
);
?>
或者您可以在调用如下所示的小部件时将$model
和attribute
传递给当前代码
echo DateTimePicker::widget(
[
'model' => $model,
'attribute' => 'opening_date',
'options' => ['placeholder' => 'Select operating time ...'],
'convertFormat' => true,
'pluginOptions' => [
'format' => 'd-M-Y g:i A',
'startDate' => '01-Mar-2014 12:00 AM',
'todayHighlight' => true
]
]
);
您可以通过name
/ model
和attribute
选项,请参见details