Laravel 6

Récupérer le nom de la vue courante dans la vue

Avatar de itanea
itanea

Hello tout le monde,

Je souhaitais simplement savoir si vous connaissiez un moyen plus simple de récupérer le nom de la vue courante dans un template blade ? Pour ma part, en fouillant l'API de Laravel, j'ai utilisé cela ;

$viewName = array_keys(view()->getFinder()->getViews())[0]

Merci pour vos lumières, @ plus et prenez bien soin de vous.

Posté il y a 2 mois
Avatar de bestmomo
bestmomo

Salut,

Pourquoi ne pas envoyer le nom de la vue comme paramètre de la vue ?

Posté il y a 2 mois
Avatar de itanea
itanea

oui tu as raison, mais je voulais voir la technique sous jacente. Au final je me sers du nom des routes qui sont plus accessibles :

@if (Route::currentRouteName() == 'todos.index')
Posté il y a 2 mois
Avatar de bestmomo
bestmomo

Je suppose que c'est pour activer le bon item dans un menu.

Posté il y a 2 mois
Avatar de itanea
itanea

ça pourrait mais c'est plutôt pour déterminer quel bouton afficher en fonction de l'affichage en cours :

Image

Image

Posté il y a 2 mois
Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Moi je me suis servi de la request pour faire un test pour ajouter une classe dans mon menu:

class="collapse {{ request()->is('primes_*') ? 'show' : 'notshow' }}"

Dans mon example, si je suis sur une page dont l'url commence par "prime_" (ex: https://monapp.fr/primes_fiche/23) ça va m'ajouter la classe show sinon ça m'ajoute la classe notshow. J'ai pas utilisé la syntaxe @if mais c'est pareil c'est juste une sytaxe ternaire.

Je ne sais pas si ça peut t'aider

Posté il y a 2 mois
Avatar de itanea
itanea

Merci pour cet exemple CinquiemeDimension. Toutes ces astuces aident toujours.

La notation ternaire est d'ailleurs en effet bien pratique dans ces cas là et beaucoup moins lourde que les @if et autres.

A plus

Fred

Posté il y a 2 mois
Avatar de bestmomo
bestmomo

Pour faire plus concis on peut aussi créer des helpers, par exemple :

<?php

if (!function_exists('currentRoute')) {
    function currentRoute($route)
    {
        return request()->url() == route($route) ? ' class=current' : '';
    }
}

Du coup dans les vues :

<li {{ currentRoute('login') }}>
  <a href="{{ route('login') }}">@lang('Login')</a>
</li>
Posté il y a 2 mois

Vous ne pouvez pas répondre à ce sujet.