[英]Change date format for Yii dateField
我想以Yii顯示日期選擇器,並以“ YYYY-MM-DD”格式獲取日期,以便可以將其保存在數據庫中。 我使用了以下代碼,但是它以“ MM / DD / YYYY”格式給出日期,這在保存到數據庫中時會引發錯誤,因為這不是日期。
查看代碼:
<div class="row">
<?php echo $form->labelEx($model,'datecreated'); ?>
<?php echo $form->dateField($model,'datecreated'); ?>
<?php echo $form->error($model,'datecreated'); ?>
</div>
模態代碼:
<?php
public function tableName()
{
return 'admin';
}
public function rules()
{
return array(
array('datecreated', 'type', 'type' => 'date', 'message' => '{attribute}: is not a date!','dateFormat'=>'YYYY-MM-DD'),
array('datecreated','safe', 'on'=>'search'),
);
}
public function attributeLabels()
{
return array(
'datecreated' => 'Birthdate',
);
}
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('datecreated',$this->datecreated,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
?>
您可以在模型中使用beforeSave
函數:
protected function beforeSave()
{
// convert when storing in db
$this->datecreated = date('Y-m-d', strtotime($this->datecreated));
return parent::beforeSave();
}
如果要以mm / dd / yyyy格式顯示日期,請在模型中使用afterFind
函數:
protected function afterFind()
{
// convert the date back to mm/dd/yyyy format while viewing
$this->datecreated = date('m/d/Y', strtotime($this->datecreated));
parent::afterFind();
}
或者,您可以在$model->save();
之前的控制器中轉換日期格式$model->save();
:
public function actionCreate()
{
$model = new Admin();
if(isset($_POST['Admin']))
{
$model->attributes=$_POST['Admin'];
$model->datecreated = date('Y-m-d', strtotime($model->datecreated));
......
$model->save();
......
}
......
}
您也可以使用CJuiDatePicker小部件:
$this->widget('zii.widgets.jui.CJuiDatePicker', array(
'model'=>$model,
'attribute'=>'datecreated',
// jQuery datepicker plugin options
'options' => array(
'showAnim' => 'fold',
'dateFormat'=>'yyyy-mm-dd',
),
'htmlOptions' => array(
),
));
您也可以使用CDateValidator添加驗證規則:
public function rules()
{
return array(
array('datecreated', 'date', 'format' => 'yyyy-MM-dd', 'allowEmpty' => false),
array('datecreated','safe', 'on'=>'search'),
);
}
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.