关于$this->refresh();的不解 [ 1.1 版本 ]
现在我要添加数据 就2个输入框(都是必填的)
控制器:
public function actionAddNotice()
{
$noticec = new NoticeC();
if(isset($_POST['Notice']) && $_POST['Notice']){
$post = $_POST['Notice'];
$flag = false;
//验证公告标题
if(empty($post['title'])){
$flag = true;
Yii::app()-> user -> setFlash('title_error','公告标题必填');**$this->refresh();**
}
//验证公告内容
if(empty($post['content'])){
$flag = true;
Yii::app()-> user -> setFlash('content_error','公告内容必填');**$this->refresh();**
}
if(!$flag){
$result = $noticec -> addNotice($post['title'],$post['content']);
$result = json_decode($result,true);
if($result['status'] == ERROR_NONE){
$this->redirect(array('noticeList'));
}else{
echo '数据保存失败,错误状态码:'.$result['status'];exit;
}
}
}
$this->render('addNotice');
}
点击提交的时候,(现在都没填) 标题那出现错误提示(标题必填) 内容那没有提示 在这里$this->refresh();好像断点一样,下面代码不运行了 当时界面还是渲染的 又不像是断点 实在搞不清楚$this->refresh()的作用?希望给位请教
共 1 个回答
-
refresh()执行的是redirect,在CController中的函数式这样定义的:
/** * Refreshes the current page. * The effect of this method call is the same as user pressing the * refresh button on the browser (without post data). * @param boolean $terminate whether to terminate the current application after calling this method * @param string $anchor the anchor that should be appended to the redirection URL. * Defaults to empty. Make sure the anchor starts with '#' if you want to specify it. */ public function refresh($terminate=true,$anchor='') { $this->redirect(Yii::app()->getRequest()->getUrl().$anchor,$terminate); }
你的
title
为空,就不会检查content
了,因为重定向了就没有必要执行后面的语句。所以setFlash就只有title
的信息。你要想继续执行而不中断当前程序,就设refresh的第一个参数为false。但是你有两个refresh,这样做逻辑上不合适。
共 3 条回复strive 觉得很赞
xyf90314
注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
最后登录:2023-03-13
在线时长:95小时23分
- 粉丝21
- 金钱5257
- 威望40
- 积分6607