Yii EJuiDateTimePicker值未保存到数据库
我正在yii框架中为日期和时间选择器使用EJuiDateTimePicker扩展。我已经下载了EJuiDateTimePicker并将其置于protected\extensions\jui下 视图:Yii EJuiDateTimePicker值未保存到数据库,yii,yii-extensions,Yii,Yii Extensions,我正在yii框架中为日期和时间选择器使用EJuiDateTimePicker扩展。我已经下载了EJuiDateTimePicker并将其置于protected\extensions\jui下 视图: $this->widget( 'ext.jui.EJuiDateTimePicker', array( 'model' => $model,
$this->widget(
'ext.jui.EJuiDateTimePicker',
array(
'model' => $model,
'attribute' => 'todo_datetime',
'value' => $model->todo_datetime,
'options' => array(
'dateFormat' => 'dd-mm-yy',
'timeFormat' => 'hh:mm:ss',//'hh:mm tt' default
),
)
);
if(isset($_POST['Todo']))
{
$model->attributes=$_POST['Todo'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
行动:
$this->widget(
'ext.jui.EJuiDateTimePicker',
array(
'model' => $model,
'attribute' => 'todo_datetime',
'value' => $model->todo_datetime,
'options' => array(
'dateFormat' => 'dd-mm-yy',
'timeFormat' => 'hh:mm:ss',//'hh:mm tt' default
),
)
);
if(isset($_POST['Todo']))
{
$model->attributes=$_POST['Todo'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
问题:
$this->widget(
'ext.jui.EJuiDateTimePicker',
array(
'model' => $model,
'attribute' => 'todo_datetime',
'value' => $model->todo_datetime,
'options' => array(
'dateFormat' => 'dd-mm-yy',
'timeFormat' => 'hh:mm:ss',//'hh:mm tt' default
),
)
);
if(isset($_POST['Todo']))
{
$model->attributes=$_POST['Todo'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
保存在数据库表中的值为0000-00-00 00:00:00。它不采用日期时间选择器的值
编辑:
$this->widget(
'ext.jui.EJuiDateTimePicker',
array(
'model' => $model,
'attribute' => 'todo_datetime',
'value' => $model->todo_datetime,
'options' => array(
'dateFormat' => 'dd-mm-yy',
'timeFormat' => 'hh:mm:ss',//'hh:mm tt' default
),
)
);
if(isset($_POST['Todo']))
{
$model->attributes=$_POST['Todo'];
if($model->save())
$this->redirect(array('view','id'=>$model->id));
}
模型验证
return array(
array('todo_text, todo_datetime, priority, status', 'required'),
array('priority, status', 'numerical', 'integerOnly'=>true),
// The following rule is used by search().
// Please remove those attributes that should not be searched.
array('todo_text, todo_datetime, added_on, priority, status', 'safe', 'on'=>'search'),
);
好吧,没什么奇怪的,您应该在小部件和数据库中使用相同的日期格式,实际上:
- 在您的小部件中:
dd-mm-yy hh:mm:ss
- 在数据库中:
yyyy-mm-dd hh:mm:ss
public $dateTimeIncomeFormat = 'yyyy-MM-dd H:mm:ss';
public $dateTimeOutcomeFormat = 'dd-MM-yy H:mm:ss';
public function getDateTime()
{
return Yii::app()->dateFormatter->format($this->dateTimeOutcomeFormat, CDateTimeParser::parse($this->todo_datetime, $this->dateTimeIncomeFormat));
}
public function setDateTime($datetime)
{
$this->todo_datetime = Yii::app()->dateFormatter->format($this->dateTimeIncomeFormat, CDateTimeParser::parse($datetime, $this->dateTimeOutcomeFormat));
}
这将创建一个dateTime
虚拟属性,您可以在小部件中使用该属性。
不要忘记在模型验证规则中添加此属性
向我们展示您的模型验证规则以及数据库中的日期字段(日期时间、时间戳等)?我将日期时间作为数据类型我在小部件选项“选项”=>数组中有正确的日期时间格式('dateFormat'=>'yy-mm-dd','timeFormat'=>'h:mm:ss',//'hh:mm-tt'默认值),