2013-09-28 184 views
1

我剛開始學習Yii,不知道任何東西,所以這個問題可能聽起來很愚蠢。在yii中測試一些演示應用時,我遇到了這個錯誤消息。Yii beforeAction兼容性問題

嚴格的標準:SiteController :: beforeAction的聲明()應該與CController兼容:: beforeAction($行動)在C:\ WAMP \ WWW \保護\ \控制器SiteController.php

誰能幫助我,這裏有什麼問題,我如何解決這個問題。

這裏是控制器的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; 
} 

注:我KNW這不是學習新的東西,但即時通訊的時間有點短的正確方法。所以請耐心等待。

回答

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,除非您希望停止執行該操作。

+0

感謝,這是控制器的beforeAction功能是如何在擴展控制器定義 公共職能beforeAction(CAction $行動) – iamlucifer

+0

@iamagent如果您仍然收到錯誤,您可以編輯你的問題,顯示你什麼'beforeAction'方法看起來像。此外,請確保您使用'protected'而不是'public',因爲父項是'protected',並且可能會導致此錯誤。 –

+0

我編輯了問題並添加了beforeAction方法 – iamlucifer