Hello !
J'ai installé la dernière version de Laravel (en mars 2021) sur mon ubuntu 20.04 avec docker et sail. Je suis un noob absolu en Laravel, et desireux de me former.
J'ai créé une appli (laratest) avec:
curl -s https://laravel.build/laratest | bash
Ensuite , j'ai suivi un tuto pour créer une page un peu plus sophistiquée en copiant un exemple BootStrap 4.0, page qui utilise des resources css et js.
J'ai donc créé des répertoires "css", "js" et "img" dans mon répertoire "laratest/storage/app/public" et j'y ai placé les fichiers css et js nécessaires. J'ai fait des liens symboliques de "laratest/public" vers "laratest/storage/app/public".
je les utilise dans la vue par :
<link href="{{asset('css/bootstrap.min.css')}}" rel="stylesheet">
(j'ai aussi essayé d'ajouter public/ dans le path, sans succès)
Ma page se charge, mais sans aucun formatage. Les outils de developpement de chrome m'indiquent que les fichiers css et js ne sont pas trouvés.
Le chemin généré dans le code source de la page sur chrome est "http://localhost/css/bootstrap.min.css". Si j'essaye de le copier dans le navigateur, j'obtiens un 404.
Comment faire pour que Laravel me génère les bons chemins pour mes css et js ??
Salut,
Tu as pas utilisé la bonne manière, storage/app/public
sert à créer un lien symbolink vers public/storage
avec la commande artisan storage:link
, ce dossier sert à stocker les stockages public (upload par exemple). Tes assets doivent être dans public/
. Le mieux est d'utiliser laravel-mix
(inclut au projet) et d'appeler tes assets avec la fonction mix
Merci pour ta réponse Balsakup !
Je ne comprends pas bien ce que tu me dit, il me semble que c'est l'opposé de la doc de Laravel 8. Je copie le petit passage auquel je pense :
--
The Public Disk
The public disk included in your application's filesystems configuration file is intended for files that are going to be publicly accessible. By default, the public disk uses the local driver and stores its files in storage/app/public.
To make these files accessible from the web, you should create a symbolic link from public/storage to storage/app/public. Utilizing this folder convention will keep your publicly accessible files in one directory that can be easily shared across deployments when using zero down-time deployment systems like Envoyer.
--
J'ai essayé ce que tu recommande, mais ça ne marche pas non plus.
Le lien symbolique crée un lien symbolique storage dans le dossier public.
l'url d'accès de ton fichier devrait plutôt être http://localhost/storage/css/bootstrap.min.css
Mais comme la précisé @Balsakup, tes assets doivent être situés directement dans ton dossier laratest/public/
et non pas dans le dossier laratest/storage/public qui sert généralement pour d'autres types de fichiers (comme les fichiers téléchargés)
Si tu veux complètement charger tes assets avec Laravel Mix, le mieux est de:
Pour plus d'info sur laravel-mix : https://laravel.com/docs/8.x/mix
J'ai finalement trouvé ce qui n'allait pas. J'avais fait des liens symbolique avec un chemin absolu, en remplaçant par des liens relatifs, tout fonctionne parfaitement.
Merci à ceux qui m'on répondu pour les infos utiles