Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Подскажите как передать в контроллер?
routes.php
Route::bind('shop', function($id, $route)
{
$shop = Shop::find($id);
if ($shop == null)
{
$shop = $id;
}
return $shop;
});
Route::group(array('domain' => '{shop}.domain.local'), function()
{
// Так выводит
Route::get('/test', function($shop)
{
return $shop;
});
// Так нет
Route::get('test', 'ShopController@test');
});
ShopController.php
class ShopController extends \BaseController {
protected $shop;
public function __construct(Shop $shop)
{
parent::__construct();
$this->shop = $shop;
}
public function test()
{
return $this->shop;
}
}
Не в сети
Правильный вариант:
class ShopController extends \BaseController
{
public function test($shop)
{
return $shop;
}
}
При указании
Shop $shop
в конструкторе, Laravel внедрит на место этого параметра новый экземпляр класса Shop, не связанный с тем, что используется в качестве параметра URL.
Не в сети
А есть возможность передать в конструктор экземпляр класса из параметра URL?
Нужен фильтр который зависит от этого параметра.
Не в сети
Похоже у меня в вопросе был ответ. Надо получить экземпляр в фильтре.
protected $shop;
public function __construct()
{
parent::__construct();
$this->beforeFilter(function($route, $request) {
$this->shop = $route->parameter('shop');
return $this->shop->title;
});
}
Не в сети