В моем приложении 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);
}
}
Мне нужен контроллер и имя действия на каждом рендере, чтобы показать активные ссылки.
Как это исправить ..?