php - modificar - ¿Usar CSS en las vistas de Laravel?
vistas en laravel (16)
Actualización para laravel 5.4 ----
Todas las respuestas han usado la clase HTML para laravel, pero supongo que ya se ha depreciado en laravel 5.4, así que ponga sus archivos css y js en public-> css / js Y refiéranlos en su html usando
<link href="css/css.common.css" rel="stylesheet" >
Acabo de comenzar a aprender Laravel, y puedo hacer los conceptos básicos de un controlador y enrutamiento.
Mi sistema operativo es Mac OS X Lion, y está en un servidor MAMP.
Mi código de routes.php:
Route::get(''/'', function() {
return View::make(''home.index'');
});
Route::get(''businesses'', function() {
return View::make(''businesses.index'');
});
Route::get(''testing'', function() {
return View::make(''testing.index'');
});
Route::get(''hello'', function() {
return "<h3>Hello world!</H3>";
});
Eso funciona, las vistas se muestran perfectamente, sin embargo, "lo que quiero probar y hacer es incluir CSS en las vistas, traté de agregar un vínculo a una hoja de estilo dentro del directorio, pero la página lo mostraba como la fuente predeterminada del navegador, incluso ¡aunque el CSS estaba en el HTML!
Este es index.php de negocios dentro de la carpeta de vistas:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<p>Business is a varied term. My content here.
Intenté usar el motor de plantillas de Blade en mi carpeta de otras vistas (pruebas) para mostrar CSS, pero de nuevo el CSS no se mostró a pesar de estar en la carpeta de pruebas.
¿Cómo puedo superar este problema y mejorar, a medida que poco a poco estoy aprendiendo este marco?
Como mencionó Ahmad Sharif, puedes vincular la hoja de estilo a través de http
<link href="{{ asset(''/css/style.css'') }}" rel="stylesheet">
pero si usa https
, la solicitud se bloqueará y aparecerá un error de contenido mixto, para usarla sobre https use secure_asset
como
<link href="{{ secure_asset(''/css/style.css'') }}" rel="stylesheet">
Copie el archivo css o js que desea incluir en la carpeta pública o puede desear almacenarlos en carpetas públicas / css o public / js.
P.ej. estás usando el archivo style.css de la carpeta css en el directorio público y luego puedes usar
<link rel="stylesheet" href="{{ url() }}./css/style.css" type="text/css"/>
Pero en Laravel 5.2 deberás usar
<link rel="stylesheet" href="{{ url(''/'') }}./css/style.css" type="text/css"/>
y si desea incluir archivos javascript desde la carpeta public / js, también es bastante simple
<script src="{{ url() }}./js/jquery.min.js"></script>
y en Laravel 5.2 tendrás que usar
<script src="{{ url(''/'') }}./js/jquery.min.js"></script>
la función url()
es una función auxiliar de laravel que generará una URL completamente calificada para una ruta dada.
Desde Laravel 5, la clase HTML
ya no está incluida por defecto.
Si está utilizando ayudantes de Form o HTML, verá un error que indica que no se encontró la clase ''Form'' o que no se encontró la clase ''Html''. Los ayudantes Form y HTML han quedado obsoletos en Laravel 5.0; sin embargo, hay reemplazos impulsados por la comunidad como los que mantiene el Colectivo Laravel.
Puede utilizar la siguiente línea para incluir sus archivos CSS o JS:
<link href="{{ URL::asset(''css/base.css'') }}" rel="stylesheet">
<link href="{{ URL::asset(''js/project.js'') }}" rel="script">
En mi opinión, la mejor opción para enrutar a css & js usa el siguiente código:
<link rel="stylesheet" type="text/css" href="{{ URL::to(''route/to/css'') }}">
Entonces, si tiene un archivo css llamado main.css dentro de la carpeta css en la carpeta pública, debería ser el siguiente:
<link rel="stylesheet" type="text/css" href="{{ URL::to(''css/main.css'') }}">
Eso no es posible hermano, Laravel supone que todo está en una carpeta pública.
Entonces mi sugerencia es:
- Ve a la carpeta pública .
- Crea una carpeta, preferiblemente llamada css .
- Crea la carpeta para las vistas respectivas para organizar las cosas.
- Coloque las respectivas CSS dentro de esas carpetas, eso sería más fácil para usted.
O
Si realmente insistes en poner css dentro de la carpeta views, podrías intentar crear Symlink (eres mac así que está bien, pero para Windows, esto solo funcionará para Vista, Server 2008 o superior) desde tu directorio de carpetas css al público. carpeta y puedes usar {{HTML::style(''your_view_folder/myStyle.css'')}}
dentro de tus archivos de vista, aquí hay un código para tu conveniencia, en el código que publicaste, ponlos antes de la return View::make()
:
$css_file = ''myStyle.css'';
$folder_name = ''your_view_folder'';
$view_path = app_path() . ''/views/'' . $folder_name . ''/'' . $css_file;
$public_css_path = public_path() . ''/'' . $folder_name;
if(file_exists($public_css_path)) exec(''rm -rf '' . $public_css_path);
exec(''mkdir '' . $public_css_path);
exec(''ln -s '' . $view_path .'' '' . $public_css_path . ''/'' . $css_file);
Si realmente quieres intentar hacer tu idea, prueba esto:
<link rel="stylesheet" href="<?php echo app_path() . ''views/your_view_folder/myStyle.css''?>" type="text/css">
Pero no funcionará incluso si el directorio de archivos es correcto porque Laravel no lo hará por razones de seguridad, Laravel lo ama mucho.
Póngalos en public
carpeta public
y llámelos en la vista con algo como href="{{ asset(''public/css/style.css'') }}"
. Tenga en cuenta que el public
debe incluirse cuando llame a los activos.
Para Laravel 5.4 y si usa Mix Helper, use
<link href="{{ mix(''/css/app.css'') }}" rel="stylesheet">
<script src="{{ mix(''/js/app.js'') }}"></script>
Podemos hacer esto de la siguiente manera.
<link href="{{ asset(''/css/style.css'') }}" rel="stylesheet">
{{ HTML::style(''css/style.css'', array(''media'' => ''print'')) }}
Buscará el archivo de estilo en la carpeta pública de Laravel y luego lo renderizará.
Pon tus activos en la carpeta pública
public/css
public/images
public/fonts
public/js
Y ellos lo llamaron usando Laravel
{{ HTML::script(''js/scrollTo.js''); }}
{{ HTML::style(''css/css.css''); }}
Pon tus activos en la carpeta pública
public/css
public/images
public/fonts
public/js
Y luego lo llamó usando Laravel
{{ URL::asset(''js/scrollTo.js''); }} // Generates the path to public directory public/js/scrollTo.js
{{ URL::asset(''css/css.css''); }} // Generates the path to public directory public/css/css.css
(O)
{{ HTML::script(''js/scrollTo.js''); }} // Generates the path to public directory public/js/scrollTo.js
{{ HTML::style(''css/css.css''); }} // Generates the path to public directory public/css/css.css
Simplemente puede poner todos los archivos en su carpeta especificada en público como
público / css
public / js
público / imágenes
Entonces simplemente llame a los archivos como en html normal como
<link href="css/file.css" rel="stylesheet" type="text/css">
Funciona bien en cualquier versión de Laravel
También puede escribir una etiqueta de enlace simple como lo haría normalmente y luego en el uso de href attr:
<link rel="stylesheet" href="<?php echo asset(''css/common.css'')?>" type="text/css">
por supuesto, necesitas poner tu archivo css en público / css
pon tu CSS en carpeta pública, luego
agregue esto en su archivo blade
<link rel="stylesheet" type="text/css" href="{{ asset(''mystyle.css'') }}">
ponga su archivo css en la carpeta pública. (public / css / bootstrap-responsive.css) y <link href="./css/bootstrap-responsive.css" rel="stylesheet">
su archivo css pertenece a la carpeta pública o una subcarpeta de la misma.
fe si pones tu CSS en
public/css/common.css
usarías
HTML::style(''css/common.css'');
En tu vista de hoja ...
O también puede usar la clase Asset http://laravel.com/docs/views/assets ...