La Laravel, il lavoro di uscita variabile con Visualizza :: Condividi ma non con Visualizza :: Compositore

StackOverflow https://stackoverflow.com//questions/21007892

  •  21-12-2019
  •  | 
  •  

Domanda

Ho bisogno dello stesso menu in tutte le mie opinioni.

Quindi ottengo i dati di cui ho bisogno per l'output del menu in un costruttore definito nel mio basecontroller.

Per avere i dati che ho provato per la prima volta di utilizzare la vista :: Compositore ma non dunno perché non ottengo alcun errore, sembra view :: Composer non è stato eseguito affatto ...

Se utilizzo View :: Share, il suo lavoro

// 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);
    });
}
.

// base.twig

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

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

Sono nuovo a Laravel Quindi forse mi manca qualcosa?

È stato utile?

Soluzione

Penso che il motivo per cui questo non funziona sia dovuto a dove si inserisce il compositore di visualizzazione nel tuo codice.Visualizza i compositori a Laravel sono essenzialmente callbackti che vengono eseguiti non appena la vista è resa.Dove è definita questa funzione init()?La mia ipotesi è che la vista viene creata prima il tuo compositore di visualizzazione è definito - il che significa che la callback del compositore di visualizzazione non verrà mai eseguita.

Prova a spostare l'intero blocco composito di vista dalla funzione init() e aggiungerlo alla parte inferiore del file di routine.php e vedere se funziona.Non è un brutto posto per posizionare i compositori di visualizzazione se non ne hai troppi, se hai potuto creare una nuova classe per memorizzarle e aggiungere quel percorso al tuo percorso di autoload.

Leggi di più A proposito di compositori di visualizzazione qui

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top