2016-01-05 4 views
0

У меня есть промежуточное программное обеспечение, которое использует перенаправление для вызова контроллера, который затем отображает представление.Перенаправить действие на контроллер в разных пространствах имен

public function handle($request, Closure $next) 
{ 
    redirect()->action('Full\Namespace\To\Controller\[email protected]'); 
} 

У меня также есть это как маршрут. Когда я следую по маршруту, вид отображается в порядке. Когда я пытаюсь перенаправить с помощью action и передаю пространство имен моего контроллера, laravel пытается найти контроллер в базовом приложении. Я получаю ошибку

Action App\Http\Controllers\Full\Namespace\To\Controller\[email protected] not defined. 

Когда контроллер находится в

App\Vendor\Myname\Mypackagename\Controllers\[email protected] 

Я пространство именами моего контроллера правильно, насколько я могу сказать, как он совпадает с другими контроллерами в пространствах имёны этот каталоге. Это единственный контроллер, который я пытаюсь вызвать из действия.

ErrorController.php в App\Vendor\Myname\Mypackagename\Controllers

namespace Full\Namespace\To\Controller; 

use App\Http\Controllers\Controller; 

class ErrorController extends Controller 
{ 
    public function fourOhThree() 
    { 
     return view('...'); 
    } 
} 

Я думаю, что я делаю что-то неправильно в том, как я передавая контроллер пространства имен метода action.

ответ

4

Попробуйте добавить '\' перед квалифицированным именем.

action('\Full\Namespace\To\Controller\ErrorCo[email protected]') 
+0

Пробовал это. Ошибка уходит, но контроллер не срабатывает. – myol

+0

Я не знаю, что вы подразумеваете под «контроллером не горит» – lagbox

+0

Как и в перенаправлении, похоже, ничего не делает. Любой код в 'ErrorController' не запускается. ... Думаю, теперь это другая проблема? – myol

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