Question

J'ai besoin de la même menu dans tous mes points de vue.

J'ai donc obtenir les données dont j'ai besoin pour la sortie du menu dans un constructeur défini dans mon BaseController.

Pour obtenu les données que j'ai d'abord essayé d'utiliser View::compositeur mais ne sais pas pourquoi je ne peut pas faire d'erreur, il ressemble à Vue::le compositeur n'est pas exécutée du tout...

Si j'utilise View::action, son travail

//BaseController.php

//function called in the constructor
public function init()
{
    $envs = $this->game->environments()->get();

    View::share('test', $envs);

    View::composer('layouts.base', function($view)
    {
        $view->with('envs', $envs);
    });
}

//de base.twig

//nothing output here, no error
{% for env in envs %}
         {{ env.name }}
{% endfor %}

//its work
{% for env in test %}
         {{ env.name }}
{% endfor %}

Je suis nouveau sur laravel alors peut-être que j'ai raté quelque chose ?

Était-ce utile?

La solution

Je pense que la raison que ce n'est pas le travail, c'est parce que de là où vous mettez le View Composer dans votre code.Vue Compositeurs dans Laravel sont essentiellement des rappels qui sont exécutées dès que la vue est rendue.Où est-ce init() fonction définie?Ma conjecture est que la vue est créée avant votre point de vue compositeur est défini, ce qui signifie que le point de vue compositeur de rappel ne sera jamais exécutée.

Essayez de déplacer le point de vue compositeur pâté de maisons de la init() la fonction et ajouter à la partie inférieure de votre routes.php fichier et voir si cela fonctionne.Ce n'est pas un mauvais endroit pour placer votre point de vue compositeurs si vous n'avez pas de trop, si vous le faites, vous pouvez créer une nouvelle classe pour les stocker et d'ajouter que le chemin d'accès à votre autoload chemin.

Lire plus sur l'affichage des compositeurs ici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top