2013-07-22 2 views
0

Я хочу реализовать язык Setter для всех контроллеров и должен запустить этот метод до маршрутизации к контроллеру -> передний контроллер.Выполнение переднего контроллера Yii перед маршрутизацией

Если реализовали метод в моем контроллера класса, но для некоторых использований он должен быть запущен раньше, прежде чем контроллер initilisation

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


    // Set the application language 

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

ответ

1

Вы могли бы используйте событие onBeginRequest приложения. Это обычно требует, чтобы вы добавили код в свой index.php. Вот простой пример:

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

Конечно, вместо функции закрытия вы также можете прикрепить любой другой действительный callback.

+0

, это сработало для меня, спасибо! – slaver113

-1

Вы можете переопределить beforeAction ($ действие)

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

beforeAction выполняется после функции __construct не ранее – slaver113

Смежные вопросы