我試圖將一個DateTimePicker控件到的ActiveForm在Yii2作爲一個字段這樣的觀點:Yii2的ActiveForm場小部件不張貼值模型
$form->field($model, 'date_from')->widget(DateTimePicker::className(),
[
'value' => '2013-01-01T00:00:00Z',
'readonly' => true,
'removeButton' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-ddThh:ii:ssZ',
'autoclose' => true,
'class' => 'form-control',
],
]);
提交後,它驗證爲空並不會將值傳遞給模型。儘管設置了value屬性,該小部件也不會在文本字段中顯示默認值。在控制器
echo '<label class="control-label">From</label>';
echo DateTimePicker::widget([
'name' => 'ModelName[date_from]',
'value' => '2013-01-01T00:00:00Z',
'readonly' => true,
'removeButton' => false,
'pluginOptions' => [
'format' => 'yyyy-mm-ddThh:ii:ssZ',
'autoclose' => true,
'class' => 'form-control',
],
]);
與此:
public function actionName()
{
$model = new ModelName();
if ($model->load(($data = Yii::$app->request->post())) && $model->execquery()) {
Yii::$app->session->setFlash('formSubmitted');
$model->from = time('yyyy-mm-ddThh:ii:ssZ', strtotime($data['ModelName']['date_from']));
$model->to = time('yyyy-mm-ddThh:ii:ssZ', strtotime($data['ModelName']['date_to']));
return $this->render('name', ['model' => $model]);
}
return $this->render('name', ['model' => $model]);
}
模型看起來像這樣的cooresponding值
我可以在視圖中顯示的控件這樣使工作過程:
public $text1;
public $text2;
public $date_from;
public $date_to;
public $email;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
// positions and dates are required
[['text1', 'text2', 'date_to', 'date_from'], 'required'],
['email', 'email'],
];
}
我的表單中的文本輸入字段正常工作。是否還需要添加更多內容到控制器或模型中,以確保窗口小部件值在提交時發佈?
我正在使用Kartik DateTimePicker部件https://github.com/kartik-v/yii2-widget-datetimepicker,但我嘗試過使用其他窗口小部件的相同問題,所以我想我的代碼中缺少一些東西。
謝謝,但是還有什麼我需要添加到控制器強制第一將date_from值傳遞給模型的方法?這似乎是自動發生的文本輸入字段,但我的$ model-> date_from保持爲空。 – anchoress