1

我今天刚开始学习 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;
}

注意:我知道这不是学习新东西的正确方法,但我的时间有点短。所以请多多包涵。

4

1 回答 1

2

您正在扩展从 继承的方法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,除非您希望停止执行该操作。

于 2013-09-28T11:21:19.700 回答