Ответ 1
Невозможно их вводить, но у вас есть доступ ко всем из них через:
class TestController{
protected $_param;
public function __construct()
{
$id = Route::current()->getParameter('id');
}
}
Можно ли ввести параметр маршрута (или сегмент маршрута) в конструктор-контроллер?
Вы найдете код, чтобы уточнить мой вопрос.
class TestController{
protected $_param;
public function __construct($paramFromRoute)
{
$this->param = $paramFromRoute;
}
public function testAction()
{
return "Hello ".$this->_param;
}
}
----------------------------------------------------
App::bind('TestController', function($app, $paramFromRoute){
$controller = new TestController($paramFromRoute);
return $controller;
});
----------------------------------------------------
// here should be some magic
Route::get('foo/{bar}', 'TestController');
Невозможно их вводить, но у вас есть доступ ко всем из них через:
class TestController{
protected $_param;
public function __construct()
{
$id = Route::current()->getParameter('id');
}
}
Laravel 5.3.28
Вы не можете вводить параметр... Но вы можете ввести запрос и получить его из экземпляра маршрутизатора, например:
//route: url_to_controller/{param}
public function __construct(Request $request)
{
$this->param = $request->route()->parameter('param');
}
В Laravel 5.4 вы можете использовать это, чтобы запросить параметр:
public function __construct(Request $request) {
$id = $request->get("id");
}
Наконец, но самое главное, вы можете просто "набросать" намек на зависимость в конструкторе класса, который разрешен контейнером, включая контроллеры, прослушиватели событий, задания очереди, промежуточное ПО и т.д. На практике это то, как большинство ваших объектов разрешаются контейнером.