我想为所有控制器实现一个语言Setter,并且需要在路由到控制器之前运行此方法 - >前控制器。
如果在我的Controller类中实现了一个方法,但对于某些用法,它必须在控制器初始化之前运行
class Controller extends CController
{
public function __construct($id, $module = null)
{
// Set the application language
if (isset($_GET['language']))
{
$lang = $_GET['language'];
答案 0 :(得分:1)
您可以使用应用程序的onBeginRequest
事件。这通常要求您向index.php
添加一些代码。这是一个简单的例子:
$app = Yii::createWebApplication($config);
$app->onBeginRequest = function($event) {
// ... whatever you want to do
}
$app->run();
当然,您还可以附加任何其他有效的callback。
,而不是关闭功能答案 1 :(得分:-1)
您可以覆盖beforeAction($ action)
class Controller extends CController
{
public function beforeAction($action)
{
$language = !empty($_GET['lang']) ? $_GET['lang'] : 'en';
return parent::beforeAction($action);
}
}