2013-08-08 5 views
0

У меня есть этот класс и фильтр:Laravel 4: Как я могу вызвать контроллер внутри фильтра?

class ApiController extends BaseController { 

public function __construct() 
{ 
    $this->afterFilter(function() 
    { 
     if ($this->response_type == 'json'){ 

     } 
    }); 
} 

Когда проходит эта линия ...

if ($this->response_type == 'json'){ 

... Я имею в виду контроллер, но как-то звонит фильтр, так что я не могу делать что-либо с родительским объектом.

Есть ли способ, который я могу назвать классом контроллера?

Спасибо.

ответ

0

Если вы используете закрытие (анонимная функция), вы можете указать, какие «внешние» переменные вы хотите использовать, так как в противном случае область действия является локальной.

мое предположение, что это должно работать для вас

class ApiController extends BaseController { 

public function __construct() 
{ 
    $ctrl = $this; 
    $this->afterFilter(function() use ($ctrl) 
    { 
     if ($ctrl->response_type == 'json') 
     { 
     //do stuff 
     } 
    }); 
} 

Извините за путаницу - в конце концов, этот пост дубликат Laravel 4: Reference controller object inside filter

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