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é Le texte se poursuit plus bas
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.
use Illuminate\Http\Request;
...
public function contact(Request $request) : View
{
...
$urlRelatif = $request->path();
...
}
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.
$request = request();
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 :
{{ 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 :
{{ Request::path() }}
Parmi les fonctionnalités de l'objet $request, notons :
url() pour retrouver l'URL de la page actuelle, incluant le nom de domaine.
Ex :
$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 :
$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 :
<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 :
$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".
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.
<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>
Site fièrement hébergé chez A2 Hosting.