2015-04-24 3 views
4

Таким образом, когда вы определили контроллер ресурсов в групповом маршруте подстановочные подобласти подобный этому:Laravel 5 подстановочные поддомен + маршрут модели связывания

Route::group(array('domain' => '{subdomain}.example.com'), function() { 
    Route::resource('users', 'UserController'); 
}); 

на RouteServiceProvider

$router->model('user', 'App\User'); 

и на методе UserController шоу :

public function show($user) 
{ 
    return $user; 
} 

то, что я получаю, является именем поддомена вместо ресурса пользователя. Это происходит потому, что параметр subdomain передается в контроллер методов и я должен был бы изменить их, как это:

public function show($subdomain, $user) 
{ 
    return $user; 
} 

Я просто не хочу, чтобы добавить параметр поддомена к каждому и каждому методу контроллера в моем приложении, потому что я я ничего не буду с этим делать. Я использую параметр subdomain в промежуточном программном обеспечении, чтобы выполнить некоторые изменения конфигурации.

Как я могу это сделать, чтобы субдомен не передавался контроллерам в качестве параметра?

+0

Вы были в состоянии найти решение для этого? – mentorgashi

+1

Я сдался и в итоге включил параметр subdomain для каждого метода контроллера. Однако для некоторых случаев это было удобно. Особенно, когда мне нужно было передать параметр в представления. –

ответ

0

В функции контроллера вы можете игнорировать $ dubdomain, если вы не используете его и убедитесь, что вы typehint Пользователя как этот

public function show(User $user) 
{ 
    return $user; 
} 
+0

Спасибо Маргус. Это имеет смысл, но это не похоже на хороший способ сделать это. Это может вызвать путаницу для вложенных ресурсов. Я предпочитаю просто заставить маршрутизатор игнорировать параметр поддомена. –

+0

Я только что протестировал, и вы можете игнорировать $ subdomain, если вы его не используете. Поскольку у вас есть Пользователь, тогда вам нужно ввести текст, чтобы он был разрешен. –

+0

Я получаю 'Аргумент 1, переданный в App \ Http \ Controllers \ UserController :: show(), должен быть экземпляром App \ User, string given', когда я нажимаю User. Предполагая, что строка является переданной субдоменой. –