2014-07-17 3 views
11

J'ai installé Laravel et j'ai commencé à essayer d'écrire une application. J'ai fait des répertoires pour mes assets dans le même répertoire que/app. Mais lorsque je tente de visiter une image dans mon localhost par exemple: http://localhost/assets/images/image.pngLaravel assets url

J'ai aussi essayé sur: http://localhost/app/assets/images/image.png

je suis tombé sur le problème quand je tentais de définir une image d'arrière-plan dans une vue, et il a continué à aller à 404.

C'est ce que mon application ressemble sous app/

->app 
->assets 
->commands 
->config 
->controllers 
->database 
->lang 
->models 
->start 
->storage 
->tests 
->views 
app.txt 
routes.php 
filters.php 

mais je reçois des erreurs sur les demandes. J'ai vérifié que l'url est correcte.

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException 
+3

Vos ressources (et toute autre chose qui doit être directement touchée par un navigateur) doivent aller dans le répertoire public/car il s'agit de la racine du document. L'application/dossier ne doit pas être accessible à un navigateur. – judereid

Répondre

19

Vous devez mettre tous vos actifs dans le dossier app/public, et d'y accéder à partir de votre point de vue, vous pouvez utiliser asset() méthode d'assistance.

Ex. vous pouvez récupérer assets/images/image.png dans votre point de vue suivant:

<img src="{{asset('assets/images/image.png')}}">

+0

La syntaxe {{asset()}} ne fonctionne pas du tout dans mon cas. J'utilise arrière-plan: url ('{{asset (' assets/images/image.png ')}}') Cela ne fonctionne pas du tout lol. Erreurs de syntaxe PHP. Je ne sais pas pourquoi je continue à voir cette syntaxe quand elle renvoie toujours des erreurs dans tous les contextes – vikingcode

+2

Ce n'est pas 'url ('{{asset (' assets/images/image.png ')}})' !!, accolades '{{' une chaîne '}} 'signifie' Dans le moteur de template de lame, et vous n'avez pas à appeler la fonction 'url', la fonction' asset' retournera une URL valide à votre image, veuillez essayer le code exact dans mon post ci-dessus sans rien ajouter. –

+0

et n'oubliez pas de mettre tous les éléments dans le dossier 'app/public/assets'. –

2

Par ailleurs mettre tous vos actifs dans le dossier public, vous pouvez utiliser la méthode HTML::image(), et n'a besoin que d'un argument qui est le chemin de l'image , par rapport au dossier public, ainsi:

{{ HTML::image('imgs/picture.jpg') }} 

qui génère le code HTML suivi:

<img src="http://localhost:8000/imgs/picture.jpg"> 

Le lien vers d'autres éléments de HTML::image() Méthode: http://laravel-recipes.com/recipes/185/generating-an-html-image-element

0

Vous devez faire deux étapes:

  1. Mettez tous vos fichiers (css, js, code html, etc.) dans le dossier public.
  2. Utilisez url({{ URL::asset('images/slides/2.jpg') }})images/slides/2.jpg est le chemin de votre contenu.

De même, vous pouvez appeler js, css, etc.

-2
img src="{{URL::asset('img/img12.jpg')}}" 

Asset est prédéfini ici, donc ne font pas actifs. Il suffit d'utiliser ceci :)