2012-07-03 103 views
1

以及我已經在我的配置文件的components部分這樣的配置onMissingTranslation事件不能正常工作

'components'=>array(

     'messages' => array(
      'onMissingTranslation' => array('MissingTranslation','handler'), 
     ), 
); 

現在這是我的MissingTranslation

class MissingTranslation extends CApplicationComponent{ 

    public function handler($event){ 
     $msg= $event->message; 

    } 

} 

現在我測試它通過使用Yii:t("hello");在「你好」中根本沒有任何翻譯。這就形成了錯誤

call_user_func()預計參數1是一個有效的回調, 非靜態方法MissingTranslation ::處理器()不應該被 靜態調用

我刪除onMissingTranslation事件處理程序,它工作正常,所以我懷疑事件處理程序有問題。

這是Yii的一個bug嗎?或者我又做了一件壞事?

UPDATE

這是從Yii的

https://github.com/yiisoft/yii/issues/902#issuecomment-6732258

的答案,我希望這將有助於人都會遇到同樣的問題

+2

將函數更改爲'static',而不是'public',我想呢? –

回答

1

當你正在延伸的class和使用一個類而不創建一個InstanceObject您需要將其標記爲靜態,以便其屬性和方法s變得可見。

+0

謝謝,=),以及我已經在yii的github回購中得到了同樣的答案 –