Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.01.2014 14:19:20

L4, передача привязанной модели к группе маршрутов в контроллер

Подскажите как передать в контроллер?

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

Не в сети

#2 13.01.2014 01:55:35

Re: L4, передача привязанной модели к группе маршрутов в контроллер

Правильный вариант:

class ShopController extends \BaseController
{
	public function test($shop)
	{
		return $shop;
	}
}

При указании

Shop $shop

в конструкторе, Laravel внедрит на место этого параметра новый экземпляр класса Shop, не связанный с тем, что используется в качестве параметра URL.

Не в сети

#3 17.01.2014 17:23:37

Re: L4, передача привязанной модели к группе маршрутов в контроллер

А есть возможность передать в конструктор экземпляр класса из параметра URL?
Нужен фильтр который зависит от этого параметра.

Не в сети

#4 17.01.2014 17:40:01

Re: L4, передача привязанной модели к группе маршрутов в контроллер

Похоже у меня в вопросе был ответ. Надо получить экземпляр в фильтре.

	protected $shop;

	public function __construct()
	{
		parent::__construct();

		$this->beforeFilter(function($route, $request) {
			$this->shop = $route->parameter('shop');
			return $this->shop->title;
		});
	}

Не в сети

Подвал раздела