Ayant une architecture avec des contrôleurs empilés, les fonctions génériques sont traitées dans le contrôleur Controller, pour le back office, j’ai donc le BackController qui étend Controller, ensuite mon contrôleur ‘final’, par exemple BackProfilesController qui étend BackController, une structure tout à fait standard.

L’affichage de la vue se faisant dans BackProfilesController, et ayant eu besoin d’une variable qui, potentiellement, pourrait servir dans différents contrôleurs, j’ai donc mis en place une solution pour définir cette variable au plus bas et l’utiliser dans la vue.

J’ai géré ce point en utilisant une fonction, partant du principe que plusieurs variables pourraient avoir la même destinée d’une part, et d’autre part pour récupérer l’ensemble des variables avec un seul appel.

Dans le fichier Controller.php, j’ai ajouté une fonction référençant la variable en question :

protected function global_parameters() {

$return = [

'toto' => 'valeur toto'

];

return $return;

}

Dans le fichier BackController.php, j’ai ajouté la même fonction avec un appel à celle du parent puis ajout des variables spécifiques au back office, cette dernière peut bien sur ajouter des variables spécifiques au back office et bien entendu être aussi utilisée dans le FrontController :

protected function global_parameters() {

$return = parent::global_parameters();

$return = array_merge($return,

[

'titi' => 'valeur titi'

]);

return $return;

}

Dans le fichier BackProfilesController.php, lors de l’appel de la vue, j’ajoute donc la récupération de ces données :

return view('admin.profiles')

->with('global_parameters', $this->global_parameters())

Le tour est joué, dans la vue on peut accéder au contenu de l’ensemble des paramètres, simple et efficace.

Il y a sans doute d’autres façons de réaliser ça en Laravel, en tout cas, ça fonctionne et ça répond à mes attentes.

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

− un = 2