Yii2在ActiveForm中包含datetimepicker

时间:2019-01-18 11:10:26

标签: php yii2

我正在使用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
    ]
]);
?>

我也接受提供更简单的方式来显示该字段的解决方案。

1 个答案:

答案 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
        ]
    ]
    );
?>

或者您可以在调用如下所示的小部件时将$modelattribute传递给当前代码

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 / modelattribute选项,请参见details