路由前的Yii前端控制器实现

时间:2013-07-22 11:20:11

标签: yii front-controller

我想为所有控制器实现一个语言Setter,并且需要在路由到控制器之前运行此方法 - >前控制器。

如果在我的Controller类中实现了一个方法,但对于某些用法,它必须在控制器初始化之前运行

class Controller extends CController
{
  public function __construct($id, $module = null)
  {


    // Set the application language 

    if (isset($_GET['language']))
    {
        $lang = $_GET['language'];

2 个答案:

答案 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);
  }
}
相关问题