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.
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>
▼Publicité