Fonctions d’aide pour générer un URL vers un fichier de ressource sous Laravel

Lorsqu'on travaille avec un cadre d'application MVC, il n'est pas possible d'utiliser des adresses relatives pour accéder à différentes ressources : pages Web, images, fichiers CSS, fichiers JavaScript, etc.

En effet, la page d'accueil est généralement située au moins un dossier virtuel plus bas que les autres pages (ex : http://mondomaine.com pour l'accueil et http://mondomaine.com/produits pour la liste des produits).

Il faut donc utiliser des fonctions d'aide (en anglais : helper functions) pour y parvenir.

▼Publicité

URL d'une image ou autre type de fichier

La fonction d'aide asset() permet de générer un URL menant vers une image, une feuille de style ou un script. On devra spécifier le chemin relatif à partir de la racine du site Web (dossier public).

La fonction retournera l'URL absolu du fichier, incluant le nom de domaine.

Syntaxe Laravel

asset('cheminRelatif/fichier');

Ex :

Vue Laravel (Blade)

<img src="{{ asset('medias/fr/Logo.png') }}" alt="Mon entreprise">

Ici, la source de l'image sera http://mondomaine.com/medias/fr/Logo.png, ce qui correspond au fichier C:\Users\VotreNom\Documents\CodeLaravel\monprojet\public\medias\fr\Logo.png.

URL d'un fichier géré par Laravel Mix

Si vous travaillez avec Laravel Mix pour effectuer différentes tâches, dont la compilation et la concaténation de fichiers CSS et JavaScript, vous avez l'opportunité de demander à Laravel Mix d'ajouter aux fichiers une chaîne aléatoire afin de forcer le rafraîchissement du cache du navigateur lorsqu'un fichier est changé.

Par exemple, vous pouvez concaténer toutes les feuilles de style en un seul fichier qui sera placé à cet endroit : public\css\all.697dc39aa8ab2343fa74e2e14e48fdde.css.

La fonction d'aide mix() permet de charger le bon fichier sans avoir à se soucier de cette chaîne. Le chemin à fournir doit être relatif à la racine du site Web (dossier public). Sa valeur de retour est un URL relatif.

Syntaxe Laravel

mix('/cheminRelatif/fichier');

Ex :

Vue Laravel (Blade)

<link rel="stylesheet" href="{{ mix('/css/all.css') }}">

Ceci générera une balise du genre <link rel="stylesheet" href="/css/all.697dc39aa8ab2343fa74e2e14e48fdde.css">. Le numéro séquentiel sera assurément différent de celui présenté ici. De plus, il changera quand le fichier css sera regénéré.

Si vous avez besoin d'un URL absolu, il est possible de combiner la fonction d'aide mix() avec la fonction d'aide asset().

Ex :

Vue Laravel (Blade)

<link rel="stylesheet" href="{{ asset(mix('css/all.css')) }}">

Cette fois, la balise générée ira comme suit : <link rel="stylesheet" href="http://mondomaine.com/css/all.697dc39aa8ab2343fa74e2e14e48fdde.css">

URL d'un fichier géré par Elixir (avant Laravel 5.4)

Avant Laravel 5.4, les différents tâches sur les fichier JavaScripts, feuilles de styles, images, etc. était effectuée avec Laravel Elixir.

Si vous travaillez avec une ancienne version de Laravel, la fonction d'aide elixir() permet de charger le bon fichier sans avoir à se soucier de cette chaîne. Le chemin à fournir doit être relatif au dossier public\build.

Syntaxe Laravel

elixir('cheminRelatif/fichier');

Ex :

Vue Laravel (Blade)

<link rel="stylesheet" href="{{ elixir('css/all.css') }}">

Pour plus d'information

« Helper Functions - action() ». Laravel. https://laravel.com/docs/master/helpers#method-action

« Helper Functions - route() ». Laravel. https://laravel.com/docs/master/helpers#method-route

« Helper functions - asset() ». Laravel. https://laravel.com/docs/master/helpers#method-asset

« Get Current URL in a Blade View ». Easy Laravel. http://easylaravel.com/check-current-url

Catégories

Un commentaire

  1. Futing Zhang

    Bonjour,

    Je sais que vous recevez beaucoup de propositions publicitaires ou sans rapport avec votre contenu, alors je vais aller droit au but : j’aimerais beaucoup vous soumettre un article en tant qu’invité ou sponsorisé pour qu’il soit publié sur votre site.

    Cet article est en rapport avec le contenu de votre site web, et bien sûr, il est utile et informatif, ce que votre audience pourrait apprécier.

    Si vous acceptez les articles extérieurs ou sponsorisés, j’aimerai connaitre le prix pour pouvoir publier sur votre site.

    En vous remerciant par avance pour votre temps et l’attention que vous porterez à ma demande!

    Sincères amitiés.
    Futing