Formation PUB030 : Laravel, 2019 Les liens et les URL

24.1 Travailler avec la requête HTTP courante ($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.

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.

Contrôleur Laravel (PHP)

use Illuminate\Http\Request;

...

public function contact(Request $request) : View

{

    ...

    $urlRelatif = $request->path();

    ...

}

Fonction d'aide request()

Il est possible de retrouver la requête actuelle à l'aide d'une fonction d'aide (helper). Ceci permettra d'utiliser la requête partout, même lorsqu'elle n'a pas été injectée dans la méthode.

PHP

$request = request();

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 https://mondomaine.com/produits, la variable $url aura la valeur https://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 https://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>

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre