Использование CSS в представлениях Laravel?

Я только начал изучать Laravel и могу делать основы контроллера и маршрутизации.

Моя ОС – Mac OS X Lion, и она находится на сервере MAMP.

Мой код от 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>"; }); 

Это работает, представления отображаются отлично, «однако», что я хочу попробовать и сделать, это включить CSS в представлениях, я попытался добавить ссылку на таблицу стилей в каталоге, но на этой странице она отображалась как шрифт браузера по умолчанию даже хотя css был в HTML!

Это index.php от предприятий в папке views:

 <head> <link rel="stylesheet" type="text/css" href="mystyle.css"> </head> <p>Business is a varied term. My content here. 

Я попытался использовать механизм шаблона Blade в моей другой папке представлений (тестирование) для отображения CSS, но опять же CSS не показывался, несмотря на то, что он находится в тестовой папке!

Как я могу преодолеть эту проблему и стать лучше – поскольку я медленно изучаю эту структуру.

Поместите свои активы в общую папку

 public/css public/images public/fonts public/js 

И они называли это с помощью Laravel

 {{ HTML::script('js/scrollTo.js'); }} {{ HTML::style('css/css.css'); }} 

Поместите свои активы в общую папку

 public/css public/images public/fonts public/js 

И затем вызвал его, используя 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 

(ИЛИ)

 {{ 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 

ваш файл css принадлежит к общей папке или вложенной папке.

fe, если вы поместите свой css в

 public/css/common.css 

вы бы использовали

 HTML::style('css/common.css'); 

В вашем лезвии …

Или вы также можете использовать класс Asset http://laravel.com/docs/views/assets

Вы также можете написать простой тег ссылки, как обычно, и затем использовать href attr:

 <link rel="stylesheet" href="<?php echo asset('css/common.css')?>" type="text/css"> 

конечно, вам нужно поставить ваш файл css под public / css

Мы можем сделать это следующим образом.

 <link href="{{ asset('/css/style.css') }}" rel="stylesheet"> {{ HTML::style('css/style.css', array('media' => 'print')) }} 

Он будет искать файл стиля в общей папке Laravel, а затем отобразит его.

Как упоминал Ахмад Шариф, вы можете связать таблицу стилей над http

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

но если вы используете https тогда запрос будет заблокирован и появится ошибка смешанного контента, чтобы использовать его через https, используя secure_asset например

 <link href="{{ secure_asset('/css/style.css') }}" rel="stylesheet"> 

https://laravel.com/docs/5.1/helpers#method-secure-asset

Начиная с Laravel 5, класс HTML больше не включается по умолчанию.

Если вы используете помощники формы или HTML, вы увидите сообщение об ошибке, в котором не указан класс «Форма» или не найден класс «Html». Помощники формы и HTML устарели в Laravel 5.0; однако есть замены, связанные с сообществом, такие как те, которые поддерживаются коллективом Laravel.

Вы можете использовать следующую строку, чтобы включить ваши файлы CSS или JS:

 <link href="{{ URL::asset('css/base.css') }}" rel="stylesheet"> <link href="{{ URL::asset('js/project.js') }}" rel="script"> 

Это невозможно, и Laravel предполагает, что все находится в общей папке.

Поэтому мое предложение:

  1. Перейдите в общую папку.
  2. Создайте папку, предпочтительно названную css .
  3. Создайте папку для соответствующих просмотров, чтобы сделать вещи организованными.
  4. Поместите соответствующие css внутри этих папок, это будет проще для вас.

Или

Если вы действительно настаиваете на том, чтобы поместить css внутри папки представлений, вы можете попробовать создать Symlink (вы – mac, так что все в порядке, но для Windows это будет работать только для Vista, Server 2008 или выше) из вашего каталога каталогов css для публики и вы можете использовать {{HTML::style('your_view_folder/myStyle.css')}} внутри ваших файлов просмотра, вот код для вашего удобства, в коде, который вы отправили, поместите их перед 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); 

Если вы действительно хотите попробовать свою идею, попробуйте следующее:

 <link rel="stylesheet" href="<?php echo app_path() . 'views/your_view_folder/myStyle.css'?>" type="text/css"> 

Но это не сработает, даже если каталог файлов верен, потому что Laravel не сделает этого в целях безопасности, Laravel вас так любит.

поместите свой файл css в общую папку. (public / css / bootstrap-responsive.css) и <link href="./css/bootstrap-responsive.css" rel="stylesheet">

Скопируйте файл css или js, который вы хотите включить, в общую папку или вы можете захотеть сохранить их в папках public / css или public / js.

Например. вы используете файл style.css из папки css в общедоступном каталоге, тогда вы можете использовать

<link rel="stylesheet" href="{{ url() }}./css/style.css" type="text/css"/>

Но в Laravel 5.2 вам придется использовать

 <link rel="stylesheet" href="{{ url('/') }}./css/style.css" type="text/css"/> 

и если вы хотите включить файлы javascript из общедоступной / js-папки, это тоже довольно просто

 <script src="{{ url() }}./js/jquery.min.js"></script> 

и в Laravel 5.2 вы будете использовать

 <script src="{{ url('/') }}./js/jquery.min.js"></script> 

функция url() является вспомогательной функцией laravel, которая генерирует полный URL-адрес для заданного пути.

Обновление для laravel 5.4 —-

Все ответы использовали класс HTML для laravel, но я предполагаю, что он теперь обесценился в laravel 5.4, поэтому поместите свои css и js-файлы в public-> css / js. И ссылайтесь на них в своем html, используя

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

Для Laravel 5.4 и если вы используете помощник микса, используйте

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

Поместите их в public папку и вызовите в представлении что-то вроде href="{{ asset('public/css/style.css') }}" . Обратите внимание, что public должна включаться при вызове активов.

поместите ваш css в общую папку, затем

добавьте это в файл клика

 <link rel="stylesheet" type="text/css" href="{{ asset('mystyle.css') }}"> 

На мой взгляд, лучший вариант маршрутизации в css & js использует следующий код:

 <link rel="stylesheet" type="text/css" href="{{ URL::to('route/to/css') }}"> 

Поэтому, если у вас есть css-файл с именем main.css внутри папки css в общей папке, он должен быть следующим:

 <link rel="stylesheet" type="text/css" href="{{ URL::to('css/main.css') }}">