标签:
实现效果如下
1.把layDate封装成Yii2的widget,存在 "\common\widgets"目录下,命名为DycLayDate,具体引用查看代码。
2.对应的model的rules方法加上:
[[‘cms_publish_date‘], ‘date‘, ‘format‘=>‘yyyy-MM-dd HH:mm:ss‘ , ‘message‘ => ‘{attribute}格式不正确‘, ‘on‘ => [‘createDo‘, ‘updateDo‘] ]
其中:date --字段为日期格式;
format:规定日期格式;
message:不符合时提示信息;
on(可省略):设置使用场景;
具体用法,请查看validate类。
3.控制器中:
把原来的代码,
1 $model->setScenario(‘updateDo‘); //设置场景 2 if( !$model->save() ){ 3 $this->throwException( ‘编辑失败,原因:‘ . $model->getErrorsDesc() ); 4 }
改成下面的形式。
1 $model->setScenario(‘updateDo‘); 2 if( $model->validate() ){ 3 $model->cms_publish_date = DycUtil::beforeValidateStr2Tim($_POST[‘DycCmsInfo‘][‘cms_publish_date‘]); 4 $model->save(false); 5 }else{ 6 $this->throwException( ‘编辑失败,原因:‘ . $model->getErrorsDesc() ); 7 }
4.视图中引用:
<?= $form->field($model, ‘cms_publish_date‘)->widget(‘common\widgets\DycLaydate‘, [‘defaultDate‘ => $model->cms_publish_date]) ?>
大功告成。值得注意:date的验证,好像不支持客户端,暂时没弄明白。
在此感谢贤心,layDate连接。
标签:
原文地址:http://www.cnblogs.com/Jackmee/p/5598947.html