Yii beforeAction兼容性问题

时间:2013-09-28 10:36:47

标签: php yii

我今天刚开始学习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 个答案:

答案 0 :(得分:2)

您正在扩展从CController继承的方法,但参数列表不匹配。请注意,错误表明CController允许传递$action参数。这意味着当您扩展该方法时,它至少应该具有该参数。

这不是Yii特定的事情,而是PHP(严格标准)警告你。

对于与Yii相关的内容,请确保使用beforeAction($action)方法执行以下操作之一:

protected function beforeAction($action)
{
    ...code...

    return parent::beforeAction($action);
}

OR

protected function beforeAction($action)
{
    if (!parent::beforeAction($action)) {
        return false;
    }

    ...code...

    return true;
}

您使用哪种模式取决于您放置的...code...,以及您想要将操作短路的位置(如果有的话)。请记住,除非您希望停止执行该操作,否则必须从此方法返回true。