Travailler avec la requête HTTP courante sous Laravel ($request)

Laravel nous permet de travailler avec un objet qui représente la requête HTTP courante. Il s'agit d'un objet de type Illuminate\Http\Request. Cet objet nous donnera accès à une foule d'informations, allant de l'URL de la page actuellement affichée jusqu'aux entêtes HTTP en passant par les cookies et les informations entrées dans un formulaire.

▼Publicité

Objet de requête HTTP dans une méthode d'action

Dans une méthode d'action, pour travailler avec la variable $request, il faut demander à Laravel de l'injecter dans la méthode. Ceci sera fait simplement en ajoutant un paramètre de type Request.

Ex :

Contrôleur Laravel (PHP)

use Illuminate\Http\Request;

...

public function contact(Request $request) : View

{

    ...

    $urlRelatif = $request->path();

    ...

}

Objet de la requête HTTP dans une vue

Plusieurs fonctionnalités des requêtes HTTP sont disponible sans l'objet $request, à l'aide d'autres fonctions qui se chargent elles-même de retrouver les informations sur la requête HTTP. On peut donc y accéder dans une vue en entourant le code par {{ et }}.

Par exemple, on obtiendra l'équivalent de $request->url() comme suit :

Vue Laravel (Blade)

{{ url()->current() }}

Cependant, certaines fonctionnalités ne sont disponibles que si on a en main un objet $request. À ce moment, la vue pourra travailler avec la façade Request.

Ex :

Vue Laravel (Blade)

{{ Request::path() }}

Quelques fonctionnalités intéressantes

Parmi les fonctionnalités de l'objet $request, notons :

  • url() pour retrouver l'URL de la page actuelle, incluant le nom de domaine.

    Ex :

    Contrôleur Laravel (PHP)

    $url = $request->url();

    Si l'URL de la page est http://mondomaine.com/produits, la variable $url aura la valeur http://mondomaine.com/produits.

  • path() pour retrouver l'URL relatif de la page actuelle (sans le nom de domaine).

    Ex :

    Contrôleur Laravel (PHP)

    $url = $request->path();

    Si l'URL de la page est http://mondomaine.com/produits, la variable $url aura la valeur produits.

  • is() pour vérifier si l'URL de la page actuelle correspond à un patron.

    Ex :

    Vue Laravel (Blade)

    <li class="menu-item {!! Request::is('/') ? 'active' : '' !!}"><a href="{{ route('pages.accueil') }}">Accueil</a></li>

  • userAgent() pour obtenir de l'information sur le navigateur.

    Ex :

    Contrôleur Laravel (PHP)

    $navigateur = $request->userAgent();

    Sous Chrome, la variable $navigateur aura une valeur du genre "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36".

    Et sous FireFox : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0".

  • segment() pour travailler avec chacune des parties de l'URL de la page actuelle.

    Par exemple, le code suivant (qui est bien incomplet) permet d'afficher un fil d'Ariane. Il est inspiré de https://laravel-tricks.com/tricks/simple-breadcrumbs-with-blade-request.

    Vue Laravel (Blade)

    <ul class="page-breadcrumb">

    <li>

        <i class="fa fa-home"></i>

        <a href="{{route('pages.accueil')}}">Accueil</a>

        <i class="fa fa-angle-right"></i>

    </li>

    @for($i = 0; $i <= count(Request::segments()); $i++)

        <li>

             <a href=...>{{Request::segment($i)}}</a>

             @if($i < count(Request::segments()) & $i > 0)

                 {!!'<i class="fa fa-angle-right"></i>'!!}

             @endif

        </li>

    @endfor

    </ul>

Merci de partager ! Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestShare on StumbleUponEmail this to someone
Catégories