【问题标题】:Yii Front Controller Implementation before RoutingYii 路由前的前端控制器实现
【发布时间】:2013-07-22 11:20:11
【问题描述】:

我想为所有Controller实现一个语言Setter,需要在Routing to the Controller -> 前端Controller之前运行这个方法。

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

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


    // Set the application language 

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

【问题讨论】:

    标签: yii front-controller


    【解决方案1】:

    您可以使用应用程序的onBeginRequest 事件。这通常需要您向index.php 添加一些代码。这是一个简单的例子:

    $app = Yii::createWebApplication($config);
    $app->onBeginRequest = function($event) {
        // ... whatever you want to do
    }
    $app->run();
    

    当然,您也可以附加任何其他有效的callback,而不是闭包函数。

    【讨论】:

      【解决方案2】:

      你可以覆盖 beforeAction($action)

      class Controller extends CController
      {
        public function beforeAction($action)
        {
          $language = !empty($_GET['lang']) ? $_GET['lang'] : 'en';
          return parent::beforeAction($action);
        }
      }
      

      【讨论】:

      • beforeAction 在 __construct 函数之后而不是之前执行
      猜你喜欢
      • 2015-11-30
      • 1970-01-01
      • 2016-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      相关资源
      最近更新 更多