2012-07-03 81 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回购中得到了同样的答案 –