incluir asset php laravel blade

php - incluir - asset laravel



Laravel stylesheets y javascript no se cargan para rutas no básicas (14)

Bien, sé que este es un problema realmente elemental, pero no puedo resolverlo. Esta es una pregunta con respecto a Laravel.

Básicamente, tengo mis hojas de estilo incrustadas en mi vista de diseño predeterminada. Actualmente solo estoy usando CSS regulares para vincularlos, como por ejemplo:

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

Funciona muy bien cuando estoy en una ruta de un solo nivel, como / about , pero deja de funcionar cuando profundizo, como / about / me .

Si miro la consola de desarrollador de Chrome, veo algunos de los siguientes errores (solo para las rutas más profundas):

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

Claramente, ahora está buscando el CSS dentro de la carpeta "sobre", que por supuesto no es una carpeta.

Solo quiero que se vea en el mismo lugar para los activos independientemente de la ruta.


Está utilizando rutas relativas para sus activos, cambie a una ruta absoluta y todo funcionará (agregue una barra antes de "css".

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


La mejor manera en mi opinión, agregue la etiqueta BASE en su HTML

<base href="/" target="_top">

Entonces no es necesario usar cosas como

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

Sólo tipo

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

en su opinión, y funcionará.

Este método tratará con URL RESTful y recursos estáticos como imágenes, css, scripts.


Laravel 5.4 con mezcla de ayudante:

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


Mejor forma de usar,

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


Para Laravel 4 y 5:

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

URL :: activo se vinculará a su proyecto / público / carpeta, por lo tanto, guarde sus scripts allí.

Nota: Deberá usar plantillas blade para usar esto. Todas las plantillas de Blade deben usar la extensión .blade.php.


Si lo codifica, probablemente debería usar la ruta completa ( href="http://example.com/public/css/app.css" ). Sin embargo, esto significa que tendrá que ajustar manualmente las URL para desarrollo y producción.

Una alternativa a las soluciones anteriores sería usar <link rel="stylesheet" href="URL::to_asset(''css/app.css'')" /> en Laravel 3 o <link rel="stylesheet" href="URL::asset(''css/app.css'')" /> en Laravel 4. Esto le permitirá escribir su HTML de la manera que lo desee, pero también le permitirá a Laravel generar la ruta adecuada para usted en cualquier entorno.


Supongamos que no ha cambiado el nombre de su carpeta pública. Sus archivos css y js están en subcarpetas css y js en la carpeta pública. Ahora su encabezado será:

<link rel="stylesheet" type="text/css" href="/public/css/icon.css"/> <script type="text/javascript" src="/public/js/jquery.easyui.min.js"></script>


Supongo que estás usando Laravel 3, si es así pon tus archivos CSS / JS en una carpeta pública como

public/css public/js

y llamarlo usando plantillas Blade

{{ HTML::style(''css/style.css''); }} {{ HTML::script(''js/jquery-1.8.2.min.js''); }}


Te sugiero que lo pongas en el filtro de ruta antes en {project} /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''); });

y usando el motor de plantilla de hoja

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

o más en laravel gestión de activos documentos


Vinsa casi lo hizo bien, deberías agregar

<base href="{{URL::asset(''/'')}}" target="_top">

y los scripts deberían ir en su camino normal

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

el motivo es que las imágenes y otras cosas con una ruta relativa como fuente de imagen o solicitudes ajax no funcionarán correctamente sin la ruta base adjunta.


en laravel 4 solo tienes que pegar {{ URL::asset(''/'') }} esta manera:

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

Es lo mismo para:

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


Laravel 4

La forma mejor y correcta de hacer esto

Agregar CSS

HTML :: style se vinculará a su proyecto / público / carpeta

{{ HTML::style(''css/bootstrap.css'') }}

Añadiendo JS

HTML :: script enlazará a su proyecto / público / carpeta

{{ HTML::script(''js/script.js'') }}


Solo agregue otro problema:

Si desea eliminar /public de su proyecto usando .htaccess ,

entonces puedes usar esto, [Agregar public before /css inside asset() ]

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

[A veces, es útil.]


en Laravel 5 ,
hay 2 maneras de cargar un archivo js en su vista
primero está usando html helper, el segundo es usar activos auxiliares.
para usar html helper primero tienes que instalar este paquete a través de la línea de comandos:

composer require illuminate/html

entonces necesita volver a instalarlo, así que vaya a config / app.php, y agregue esta línea a la matriz de proveedores

''Illuminate/Html/HtmlServiceProvider''

entonces tienes que definir alias para tu paquete html así que ve a aliases array en config / app.php y agrega esto

''Html'' => ''Illuminate/Html/HtmlFacade''

ahora tu html helper está instalado, así que en tus archivos blade view puedes escribir esto:

{!! Html::script(''js/test.js'') !!}

esto buscará su archivo test.js en su project_root / public / js / test.js.
////////////////////////////////////////////////// ////////////
Para utilizar activos auxiliares en lugar de html helper, tienes que escribir algo así en tus archivos de vista:

<script src="{{ URL::asset(''test.js'') }}"></script>

esto buscará el archivo test.js en project_root / resources / assets / test.js