Je viens tout juste de commencer à apprendre Laravel et suis capable de faire les bases d’un contrôleur et du routage.
Mon système d'exploitation est Mac OS X Lion et il se trouve sur un serveur MAMP.
Mon code 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>";
});
Cela fonctionne, les vues s’affichent parfaitement. Cependant, ce que je veux essayer, c’est d’inclure du CSS dans les vues, j’ai essayé d’ajouter un lien à une feuille de style dans le répertoire, mais la page l’a affichée comme police de navigateur par défaut même si le css était dans le HTML!
C'est index.php des entreprises dans le dossier views:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<p>Business is a varied term. My content here.
J'ai essayé d'utiliser le moteur de template Blade dans mon autre dossier de vues (testing) pour afficher le CSS, mais encore une fois, le CSS ne s'affichait pas alors qu'il se trouvait dans le dossier de test!
Comment puis-je surmonter ce problème et aller mieux - alors que j'apprends lentement ce cadre.
Placez vos actifs dans le dossier public
public/css
public/images
public/fonts
public/js
Et ils l'appelaient en utilisant Laravel
{{ HTML::script('js/scrollTo.js'); }}
{{ HTML::style('css/css.css'); }}
Placez vos actifs dans le dossier public
public/css
public/images
public/fonts
public/js
Et puis appelé en utilisant 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
(OU)
{{ 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
votre fichier css appartient au dossier public ou à un sous-dossier de celui-ci.
f.e si vous mettez votre css dans
public/css/common.css
vous utiliseriez
HTML::style('css/common.css');
Dans la vue de votre lame ...
Vous pouvez également utiliser la classe d'actif http://laravel.com/docs/views/assets ...
Vous pouvez également écrire une simple balise de lien comme vous le feriez normalement, puis utiliser href attr:
<link rel="stylesheet" href="<?php echo asset('css/common.css')?>" type="text/css">
bien sûr, vous devez mettre votre fichier css sous public/css
Nous pouvons le faire de la manière suivante.
<link href="{{ asset('/css/style.css') }}" rel="stylesheet">
{{ HTML::style('css/style.css', array('media' => 'print')) }}
Il recherchera le fichier de style dans le dossier public de Laravel puis le restituera.
Comme Ahmad Sharif l'a mentionné, vous pouvez lier la feuille de style sur http
<link href="{{ asset('/css/style.css') }}" rel="stylesheet">
mais si vous utilisez https
, la demande sera bloquée et une erreur de contenu mixte se produira. Pour l'utiliser sur https, utilisez secure_asset
comme
<link href="{{ secure_asset('/css/style.css') }}" rel="stylesheet">
Depuis Laravel 5, la classe HTML
n'est plus incluse par défaut.
Si vous utilisez des aides de formulaire ou HTML, vous verrez une erreur indiquant que la classe 'Form' n'est pas trouvée ou la classe 'Html' non trouvée. Les utilitaires Form et HTML sont obsolètes dans Laravel 5.0; Cependant, il existe des remplacements à l'initiative de la communauté, tels que ceux maintenus par le collectif Laravel.
Vous pouvez utiliser la ligne suivante pour inclure vos fichiers CSS ou JS:
<link href="{{ URL::asset('css/base.css') }}" rel="stylesheet">
<link href="{{ URL::asset('js/project.js') }}" rel="script">
Mise à jour pour laravel 5.4 ----
Toutes les réponses ont utilisé la classe HTML pour laravel mais je suppose qu’elle est maintenant dépréciée dans laravel 5.4, donc Mettez vos fichiers css et js en public-> css/js .__ et faites référence à ceux-ci dans votre code HTML à l’aide de
<link href="css/css.common.css" rel="stylesheet" >
Ce n'est pas possible frère, Laravel suppose que tout est dans le dossier public.
Donc ma suggestion est:
Ou
Si vous insistez vraiment pour placer css à l'intérieur du dossier views, vous pouvez essayer de créer Symlink (vous êtes Mac, donc c'est correct, mais pour Windows, cela ne fonctionnera que pour Vista, Server 2008 ou supérieur) à partir de votre dossier css. répertoire du dossier public et vous pouvez utiliser {{HTML::style('your_view_folder/myStyle.css')}}
dans vos fichiers d’affichage, voici un code pour votre commodité, dans le code que vous avez posté, mettez-les devant le 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 vous voulez vraiment essayer de faire votre idée, essayez ceci:
<link rel="stylesheet" href="<?php echo app_path() . 'views/your_view_folder/myStyle.css'?>" type="text/css">
Mais cela ne fonctionnera pas même si le répertoire de fichiers est correct car Laravel ne le fera pas pour des raisons de sécurité, Laravel vous aime beaucoup.
mettez votre fichier css dans un dossier public. (public/css/bootstrap-responsive.css) et <link href="./css/bootstrap-responsive.css" rel="stylesheet">
mettez votre css dans un dossier public, puis
ajoutez ceci dans votre fichier de lame
<link rel="stylesheet" type="text/css" href="{{ asset('mystyle.css') }}">
A mon avis, la meilleure option pour router vers css & js utilise le code suivant:
<link rel="stylesheet" type="text/css" href="{{ URL::to('route/to/css') }}">
Donc, si vous avez un fichier css appelé main.css dans un dossier css dans un dossier public, il devrait être le suivant:
<link rel="stylesheet" type="text/css" href="{{ URL::to('css/main.css') }}">
Vous pouvez simplement mettre tous les fichiers de son dossier spécifié en public, comme
public/css
public/js
public/images
Ensuite, appelez les fichiers comme en HTML normal, comme<link href="css/file.css" rel="stylesheet" type="text/css">
Cela fonctionne très bien dans n'importe quelle version de Laravel
Utilisation {!! à new laravel
{!! asset('js/app.min.js') !!}
<script type="text/javascript" src="{!! asset('js/app.min.js') !!}"></script>
Pour Laravel 5.4 et si vous utilisez Mix Helper, utilisez
<link href="{{ mix('/css/app.css') }}" rel="stylesheet">
<script src="{{ mix('/js/app.js') }}"></script>
Placez-les dans le dossier public
et appelez-le dans la vue avec quelque chose comme href="{{ asset('public/css/style.css') }}"
. Notez que la public
doit être incluse lorsque vous appelez les actifs.
Pour ceux qui ont besoin de garder js/css hors du dossier public pour quelque raison que ce soit, dans Laravel moderne, vous pouvez utiliser sous-vues . Dites que la structure de vos vues est
views
view1.blade.php
view1-css.blade.php
view1-js1.blade.php
view1-js2.blade.php
dans view1
add
@include('view1-css')
@include('view1-js1')
@include('view1-js2')
dans les fichiers views-js.blade.php
encapsulez votre code js dans la balise <script>
dans views-css.blade.php
encapsulez vos styles dans la balise <style>
Cela indiquera à Laravel et à votre éditeur de code que ce sont en fait des fichiers js
et css
. Vous pouvez faire la même chose avec du HTML supplémentaire, des SVG et d'autres éléments pouvant être rendus par le navigateur.