105 votes

Les feuilles de style et le javascript de Laravel ne se chargent pas pour les routes non basiques

Bon, je sais que c'est une question très élémentaire, mais je n'arrive pas à la résoudre. Il s'agit d'une question concernant Laravel.

En fait, mes feuilles de style sont intégrées dans ma vue de mise en page par défaut. Actuellement, je n'utilise que du css normal pour les lier, par exemple :

<link rel="stylesheet" href="css/app.css" />

Cela fonctionne très bien lorsque je me trouve sur une route à un seul niveau, par exemple /à propos mais ne fonctionne plus lorsque je vais plus loin, comme par exemple /A propos de moi .

Si je regarde la console du développeur de Chrome, je vois certaines des erreurs suivantes (uniquement pour les routes les plus profondes) :

Resource interpreted as Stylesheet but transferred with MIME type text/html: "http://example.dev/about/css/app.css".

Il est donc clair qu'il cherche maintenant les css dans le dossier "about" - qui, bien sûr, n'est pas un dossier du tout.

Je veux juste qu'il se trouve au même endroit pour les actifs, quelle que soit la route.

6voto

Andry Yosua Points 71

Je vous suggère de le mettre sur le filtre de route avant sur {projet}/application/routes.php

Route::filter('before', function()
{
    // Do stuff before every request to your application...    
    Asset::add('jquery', 'js/jquery-2.0.0.min.js');
    Asset::add('style', 'template/style.css');
    Asset::add('style2', 'css/style.css');

});

et en utilisant le moteur de modèle de lame

{{ Asset::styles() }}
{{ Asset::scripts(); }}

ou plus sur docs sur la gestion des actifs de laravel

3voto

fravemel Points 21

Sur laravel 4 il suffit de coller {{ URL::asset('/') }} de cette façon :

  <link rel="stylesheet" href="{{ URL::asset('/') }}css/app.css" />.

Il en est de même pour :

  <script language="JavaScript" src="{{ URL::asset('/') }}js/jquery.js"></script>
  <img src="{{ URL::asset('/') }}img/image.gif">

3voto

Gsub Points 81

Laravel 5.4 avec l'aide de mix :

<link href="{{ mix('/css/app.css') }}" rel="stylesheet">
<script src="{{ mix('/js/app.js') }}"> </script>

3voto

Innocent TRA BI Points 53

Dans Laravel 5.7, placez votre fichier CSS ou JS dans le répertoire Public.

Pour le CSS :

<link rel="stylesheet" href="{{ asset('bootstrap.min.css') }}">

Pour JS :

<script type="text/javascript" src="{{ asset('bootstrap.js') }}"></script>

2voto

vinsa Points 38

Le meilleur moyen, à mon avis, est d'ajouter la balise BASE dans votre HTML.

<base href="http://stackoverflow.com/" target="_top">

Il n'est donc pas nécessaire d'utiliser des choses comme

{{ HTML::script('js/jquery/jquery-1.11.1.min.js'); }}

tapez simplement

<script src="js/jquery/jquery-1.11.1.min.js"></script>

dans votre vue et cela fonctionnera.

Cette méthode traitera les URLs RESTful et les ressources statiques comme les images, les css, les scripts.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X