2017-10-03 1 views
1

Est-il possible de dire combien de fois une vue a été incluse dans la lame, à l'intérieur de la vue?Comment obtenir combien de fois une vue a été inclus dans Laravel?

.: par exemple

@if(thisViewWasIncluded()) 
    <div ... /> 
@else 
    <div class="..." ... /> 
@endif 
+0

DebugBar fait, je suis diggin leur repo – aaron0207

+0

Wow thats ce que j'appelle la dévotion: D Merci @ aaron0207! –

+0

@ aaron0207 Non, Debugbar montre seulement les vues qui ont été rendues – manniL

Répondre

0

C'est donc la façon dont j'ai réussi à le faire:

J'ai créé un View Composer qui fixe le nom de la vue à une classe ViewBag comme ceci:

view()->composer('*', function ($view) { 
    ViewBag::attach($view->getName()); 
}); 

Ensuite, j'ai créé une fonction d'assistance viewBag() qui renvoie l'instance ViewBag qui contient toutes les informations attachées. Maintenant, il peut être utilisé comme ceci:

<h1> 
    Auth.Login was included: 
    {{ viewBag()->count('auth.login') }} times 
</h1> 

Maintenant, je peux aussi faire des choses comme:

@if(viewBag()->contains('auth.login')) 
    hello 
@endif 
0

Non, ce n'est pas possible grâce à un appel de fonction facile comme ça. Mais si vous incluez votre vue sous condition (par exemple via la fonction includeWhen()), vous pouvez simplement vérifier la valeur du conditionnel.

Exemple:

@includeWhen($boolean, 'view.name', ['some' => 'data']) 
@if($boolean) 
//View included 
@else 
//View not included 
@endif 
+0

merci! Et pouvez-vous obtenir le nom de la vue dans la vue par programmation? –

+0

@ kristófbaján Pas de problème! Oui, vous pouvez le faire :) Voir https://stackoverflow.com/questions/29458845/laravel-5-get-view-name – manniL

+0

@ kristófbaján Veuillez accepter la réponse si elle a résolu votre question :) – manniL