Maison  >  Questions et réponses  >  le corps du texte

Utilisation de l'actif lame de Laravel 8 pour afficher des images mais chargement à partir du sous-dossier de ressources

Je suis assez nouveau sur Laravel, alors soyez patient avec moi.

Je copie un framework que j'ai développé dans Node/React dans Laravel. Actuellement, je peaufine l'architecture principale et je travaille actuellement sur la page principale de la lame.

Objectif 1 :

Je souhaite utiliser l'assistant blade {{asset() }} pour charger des images dans la page de modèle. Le problème est que je souhaite charger des images à partir d'un sous-dossier situé dans le dossier ressources :

/resources/app_files_layout

Je sais que je peux le faire en déplaçant le dossier vers un répertoire public, mais ce n'est pas ce que je veux. Mon objectif est également d'approfondir mon apprentissage et ma compréhension du framework Laravel et d'essayer de maintenir la fidélité architecturale à mon framework sur d'autres langages.

Objectif 2 :

Après avoir réussi à charger l'image depuis /resources/app_files_layout via l'assistant {{asset() }} dans Blade, j'ai voulu utiliser un alias du chemin dans le code source. exemple: Je veux qu'il affiche : http://localhost/images/image-name.jpg au lieu de http://localhost/app_files_layout/image-name.jpg dans la sortie HTML du navigateur et ne les affiche jamais à l'utilisateur. Les fichiers se trouvent dans le dossier app_files_layout.

Est-ce que ce que je veux faire est possible dans Laravel ?

Dans le pire des cas :

Si Laravel n'a pas l'architecture nécessaire pour faire ce que je veux, je peux configurer une route qui affiche l'image dans le dossier /resources/app_files_layout. Autrement dit : lorsque je visite http://localhost/images/image-name.jpg sur mon navigateur, l'image située dans /resources/app_files_layout/image-name.jpg doit être chargée.

J'ai essayé de suivre cette suggestion de stackoverflow : https://stackoverflow.com/a/38736973/2510785 Cependant, cela me renvoie une erreur comme celle-ci :

The requested resource /files-layout-test/backend-layout-header-tb02-03.jpg was not found on this server.

Merci d'avance !

P粉428986744P粉428986744319 Il y a quelques jours841

répondre à tous(1)je répondrai

  • P粉928591383

    P粉9285913832023-11-10 09:47:01

    J'ai réussi à faire ça. Tout le mérite revient à @donkarnash Concernant cette question, j'ai posté le pire des cas pour créer un alias de routage : Laravel 8 – Création d'un alias de routage pour un dossier d'images dans un répertoire public

    J'ai utilisé la méthode du lien symbolique, presque similaire à ce que @sergey-ligus a mentionné dans les commentaires.

    1 – Modifier le fichier laravel configfilesystems.php : Cela ressemble initialement à ceci :

    links' => [
        public_path('storage') => storage_path('app/public'),
    ],

    Après montage, cela ressemble à ceci :

    'links' => [
        public_path('storage') => storage_path('app/public'),
        public_path('files-layout') => resource_path('app_files_layout'),
    ],

    2 - Ensuite, dans le terminal de commande, j'ai exécuté la commande suivante :

    php artisan storage:link

    3 - Enfin, j'ai exécuté le serveur et je l'ai testé. Non seulement je peux accéder au fichier dans le navigateur via http://localhost:8000/files-layout/backend-layout-header-tb02-03.jpg, mais je peux toujours utiliser l'assistant laravel Assetblade.

    Fichier lame :

    {{ asset('/files-layout/backend-layout-header-tb02-03.jpg') }}

    répondre
    0
  • Annulerrépondre