Laravel: доступ к маршруту в конструкторе контроллера - PullRequest
0 голосов
/ 30 января 2020

В моем приложении laravel мне нужно получить доступ к Route в каждом контроллере __construct().

class SomeController extends Controller
{
    public function __construct(Route $route)
    {
        parent::__construct();

        /**
         * Middleware(s)
         */
        $this->middleware('auth');

        /**
         * Extracting current controller & action from the namespace
         */
        list($controller, $method) = @explode("@", $route->getActionName());

        /**
         * Assigning values to private variables
         */
        $this->controller = preg_replace('/.*\\\/', '', $controller);
        $this->action     = preg_replace('/.*\\\/', '', $method);
    }
}

. Если я запускаю этот код, он работает без каких-либо ошибок. Однако, когда я запускаю php artisan route:list, это дает мне Illuminate\Contracts\Container\BindingResolutionException : Unresolvable dependency resolving [Parameter #0 [ <required> $methods ]] in class Illuminate\Routing\Route.

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

class SomeController extends Controller
{
    public function __construct()
    {
        parent::__construct();

        /**
         * Middleware(s)
         */
        $this->middleware('auth');

        /**
         * Extracting current controller & action from the namespace
         */
        // list($controller, $method) = @explode("@", $route->getActionName());

        /**
         * Assigning values to private variables
         */
        // $this->controller = preg_replace('/.*\\\/', '', $controller);
        // $this->action     = preg_replace('/.*\\\/', '', $method);
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...