Можно ли передать параметр маршрута в конструктор контроллера в Laravel?

Можно ли ввести параметр-параметр (или сегмент маршрута) в конструктор-контроллер?

Вы найдете код, чтобы уточнить мой вопрос.

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"); } 

Наконец, но самое главное, вы можете просто «набирать тип» зависимости от конструктора класса, который разрешен контейнером, включая контроллеры, прослушиватели событий, задания очереди, промежуточное программное обеспечение и т. Д. На практике это то, как большинство ваших объектов разрешается контейнером.

http://www.golaravel.com/laravel/docs/5.1/container/