我在yii框架中使用EJuiDateTimePicker扩展名作为日期和时间选择器。我已下载EJuiDateTimePicker并置于protected \ extensions \ jui
下查看:
$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它没有采用datetime选择器的值。
编辑:
模型验证
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'),
);
答案 0 :(得分:0)
嗯,没什么奇怪的,你应该在你的小部件和数据库中使用相同的日期格式,实际上:
dd-mm-yy hh:mm:ss
yyyy-mm-dd hh:mm:ss
你可以使用getter / setter或beforeSave / afterFind处理这个常见问题,这里是一个使用getter / setter的简单示例:
在你的模特中:
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
虚拟属性,您可以在窗口小部件中使用该属性。
不要忘记在模型验证规则中添加此属性。
http://www.yiiframework.com/doc/guide/1.1/fr/topics.i18n#date-and-time-formatting