Je construis une nouvelle application dans Laravel 5.5 qui dépendra fortement de ses noms de sous-domaines.Comment faire pour passer efficacement le nom de sous-domaine dans les contrôleurs et les vues dans Laravel
J'ai réussi à définir un groupe de routage pour le routage de sous-domaine, mais il faudra éventuellement que la variable de nom de sous-domaine soit disponible pour chaque contrôleur et pour chaque vue.
J'ai déjà un View Composer personnalisé, où je transmets des variables de session à chaque vue. Comment puis-je rendre le nom de sous-domaine disponible pour View Composer? Je ne pense pas pouvoir accéder à un sous-domaine via l'objet Request.
Aussi, est-il possible de passer le nom de sous-domaine à chaque contrôleur et ses méthodes sans avoir besoin de spécifier le paramètre dans chaque méthode?
Actuellement, mon routage ressemble:
Route::domain('{sub}.something.com')->group(function() {
Route::prefix('admin')->group(function ($sub) {
Route::get('/', '[email protected]')->name('admin.route1');
Route::get('/route2', '[email protected]')->name('admin.route2');
Route::post('/', '[email protected]')->name('admin.route3');
/snip
Mais cette façon, je dois définir toutes les méthodes de commande comme
public function method($sub){}
Pire encore, appeler toutes les routes du nom et de passer le paramètre $ sub à tous les voir comme ceci:
public function method($sub){
if(Sentinel::check()){
return redirect()->route('admin.route1',$sub);
} else {
return view('admin.route2')->with('sub',$sub);
}
}
et en vue:
{{ route('admin.route1',$sub) }}
Je comprends si je vraiment besoin de passer la variable $ sub aux vues et aux contrôleurs, mais je préfère vraiment automatiser en utilisant View Composer:
public function __construct()
{
$this->user = session('user');
$this->userdata = session('userdata');
$this->permissions = session('permissions');
}
public function compose(View $view)
{
$view->with(['user' => $this->user, 'userdata' => $this->userdata, 'permissions' => $this->permissions]);
}
Alors, comment Je reçois $ sub dans mon View Composer pour pouvoir le définir comme:
$this->subdomain = $sub_from_somewhere
Ou est-ce que je fais cela faux? Je ne pouvais pas trouver un moyen plus efficace de construire l'application avec la logique de sous-domaine en elle.
Merci beaucoup.