Перенаправить действие на контроллер в другом пространстве имен

1

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

public function handle($request, Closure $next)
{
    redirect()->action('Full\Namespace\To\Controller\ErrorController@fourOhThree'); 
}

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

Action App\Http\Controllers\Full\Namespace\To\Controller\ErrorController@fourOhThree not defined.

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

App\Vendor\Myname\Mypackagename\Controllers\ErrorController@fourOhThree

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

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.

Теги:
laravel-5
laravel-5.2

1 ответ

5
Лучший ответ

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

action('\Full\Namespace\To\Controller\ErrorController@fourOhThree')
  • 0
    Пробовал это. Ошибка исчезает, но контроллер не срабатывает.
  • 0
    я не знаю, что вы подразумеваете под «контроллер не срабатывает»
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню