Я предполагаю, что в вашем действии обновления у вас есть что-то вроде этого:
public function actionUpdate($id){
$model=$this->loadModel($id);
// Assuming the name of your model is DateModel
if(isset($_POST['DateModel'])){
$model->attributes = $_POST['DateModel'];
// more code to validate and save
}
// more code
}
Теперь, если вы проверите источник сгенерированного HTML для вашего представления формы , вы 'Вы увидите, что id и name элемента ввода для вашего атрибута datetime
установлены в качестве значения этого атрибута, что на самом деле происходит из-за строки 'name'=>$model->datetime
.Например, это может выглядеть примерно так:
<input type="text" value="2012-02-08" name="2012-02-08" id="2012-02-08" style="height:20px;" class="hasDatepicker">
В то время как мы хотим получить следующее:
<input type="text" value="2012-02-08" name="DateModel[datetime]" id="DateModel_datetime" style="height:20px;" class="hasDatepicker">
Так что наше действие контроллера может присвоить значение атрибутов с помощью строки $model->attributes = $_POST['DateModel'];
.Следовательно, простое решение - не использовать атрибут 'name'
виджета CJuiDatePicker.
Редактировать:
В противном случае, если вам абсолютно необходим атрибут 'name', вы должны установить поле даты в вашем действии контроллера, например:
$model->attributes = $_POST['DateModel'];
$model->datetime = $_POST[''.$model->datetime];