Yii beforeAction 兼容性问题
Posted
技术标签:
【中文标题】Yii beforeAction 兼容性问题【英文标题】:Yii beforeAction compatibility issue 【发布时间】:2013-09-28 10:36:47 【问题描述】:我今天刚开始学习 Yii,对它一无所知,所以这个问题听起来可能很愚蠢。在 yii 中测试一些演示应用程序时,我遇到了这个错误消息。
严格标准:SiteController::beforeAction() 的声明应与 C:\wamp\www\protected\controllers\SiteController.php 中的 CController::beforeAction($action) 兼容
谁能帮帮我,这是什么问题,我该如何解决。
这里是 beforeAction 函数
protected function beforeAction(CAction $action)
$user = Yii::app()->session->get('user');
/* is valid user check and assign user details to $user*/
Yii::app()->session->add('user',$user);
if(!isset($user))
//redirect(login page);
return false;
return true;
注意:我知道这不是学习新东西的正确方法,但我的时间有点短。所以请多多包涵。
【问题讨论】:
【参考方案1】:您正在扩展从CController
继承的方法,但参数列表不匹配。请注意,错误表明CController
允许传递$action
参数。这意味着当你扩展方法时,它也应该至少有那个参数。
这不是 Yii 特定的事情,而是 PHP(具有严格标准)警告你的事情。
对于与 Yii 相关的内容,请确保使用 beforeAction($action)
方法执行以下操作之一:
protected function beforeAction($action)
...code...
return parent::beforeAction($action);
或
protected function beforeAction($action)
if (!parent::beforeAction($action))
return false;
...code...
return true;
您使用哪种模式取决于您放置的...code...
,以及您希望在哪里短路操作(如果有的话)。请记住,您必须从此方法返回 true,除非您希望停止执行操作。
【讨论】:
谢谢,这是在扩展控制器公共函数 beforeAction(CAction $action) 中定义 beforeAction 函数的方式 @iamagent 如果您仍然收到错误,您能否编辑您的问题并显示您的beforeAction
方法的样子。另外,请确保使用protected
而不是public
,因为父级是protected
,这也可能导致此错误。
我已经编辑了问题并添加了 beforeAction 方法以上是关于Yii beforeAction 兼容性问题的主要内容,如果未能解决你的问题,请参考以下文章