在Laravel视图中使用CSS?

ave*_*808 102 php frameworks 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>";
});
Run Code Online (Sandbox Code Playgroud)

这有效,视图显示完美,''然而''我想要尝试和做的是在视图中包含CSS,我尝试添加到目录中的样式表的链接,但页面显示为默认浏览器字体甚至虽然CSS在HTML中!

这是来自views文件夹中的企业的index.php:

<head>
   <link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

<p>Business is a varied term. My content here.
Run Code Online (Sandbox Code Playgroud)

我尝试在我的其他视图文件夹(测试)中使用Blade模板引擎来显示CSS但是尽管它在测试文件夹中,CSS仍未显示!

我怎样才能克服这个问题,并且变得更好 - 因为我正在慢慢地学习这个框架.

Fer*_*oya 154

将您的资源放在公用文件夹中

public/css
public/images
public/fonts
public/js
Run Code Online (Sandbox Code Playgroud)

他们用Laravel称呼它

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

{{ HTML::style('css/css.css'); }}
Run Code Online (Sandbox Code Playgroud)

  • {{URL :: asset('js/scrollTo.js'); 工作!! (12认同)
  • 现在,对于Laravel 5.0来说,这是不同的,默认情况下不再包含illuminate/html软件包https://laracasts.com/series/laravel-5-fundamentals/episodes/10了解详情 (6认同)
  • 相同的404未找到 (4认同)
  • 您必须使用刀片才能使用该语法.如果您不使用刀片,则必须使用:<?php echo HTML :: style('css/common.css');?> (3认同)
  • 不要在@section或任何东西中调用CSS,如果你使用刀片,为我工作! (2认同)
  • 对我来说也不起作用。致命错误:未找到“HTML”类 (2认同)

Lea*_*per 55

将您的资源放在公用文件夹中

public/css
public/images
public/fonts
public/js
Run Code Online (Sandbox Code Playgroud)

然后使用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
Run Code Online (Sandbox Code Playgroud)

(要么)

{{ 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
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,URL :: asset()为我工作 (4认同)

And*_*ler 42

您的css文件属于公用文件夹或其子文件夹.

如果你把你的CSS放进去的话

public/css/common.css
Run Code Online (Sandbox Code Playgroud)

你会用的

HTML::style('css/common.css');
Run Code Online (Sandbox Code Playgroud)

在您的刀片视图中...

或者您也可以使用Asset类http://laravel.com/docs/views/assets ...


小智 24

您也可以按照正常的方式编写一个简单的链接标记,然后在href attr上使用:

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

当然你需要把你的CSS文件放在public/css下


Ahm*_*rif 23

我们可以通过以下方式做到这一点.

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

{{ HTML::style('css/style.css', array('media' => 'print')) }}
Run Code Online (Sandbox Code Playgroud)

它将搜索Laravel的公共文件夹中的样式文件,然后将呈现它.

  • 酷艾哈迈德,如果你通过 `http` &lt;link href="{{{ asset('/css/style.css') }}}" rel="stylesheet"&gt; 链接样式表,它会工作得很好,但如果你是使用 `https` 那么请求将被阻止并且会出现混合内容错误,要通过 https 使用它,你必须使用 `secure_asset` 像 &lt;link href="{{{secure_asset('/css/style.css') }}}" rel="stylesheet"&gt; https://laravel.com/docs/5.1/helpers#method-secure-asset (2认同)

Sam*_*dey 13

就像Ahmad Sharif提到的那样,你可以链接样式表 http

<link href="{{ asset('/css/style.css') }}" rel="stylesheet"> 
Run Code Online (Sandbox Code Playgroud)

但如果你使用的是https那么请求将被阻塞,混合内容错误会来,用它通过https使用secure_asset

<link href="{{ secure_asset('/css/style.css') }}" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

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

  • 只需要2个括号 - 而不是3个. (2认同)

Bon*_*ono 10

从Laravel 5开始HTML,默认情况下不再包含该类.

如果您正在使用表单或HTML帮助程序,您将看到一个错误,指出未找到类"表单"或未找到类"Html".Laravel 5.0中不推荐使用Form和HTML帮助程序; 然而,有一些社区驱动的替代品,例如由Laravel Collective维护的替代品.

您可以使用以下行来包含CSS或JS文件:

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

  • 我认为这个答案应该更高,因为这似乎是首选的方式,因为HTML类已被弃用. (2认同)

Emi*_*347 6

laravel 5.4的更新----

所有答案都已经使用了HTML类进行了laravel但是我猜它现在已经在laravel 5.4中被折旧了,所以把你的css和js文件放在public-> css/js中并在你的html中引用它们

<link href="css/css.common.css" rel="stylesheet" >
Run Code Online (Sandbox Code Playgroud)


小智 6

在我看来,路由到 css 和 js 的最佳选择使用以下代码:

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

因此,如果您在 public 文件夹中的 css 文件夹中有名为 main.css 的 css 文件,它应该是以下内容:

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


suz*_*zan 6

您可以简单地将所有文件放在其指定的文件夹中,例如


公共/css
公共/js
公共/图像


然后就像在普通 html 中一样调用文件
<link href="css/file.css" rel="stylesheet" type="text/css">

它适用于任何版本的 Laravel


Bry*_*n P 5

这是不可能的兄弟,Laravel假设一切都在公共文件夹中.

所以我的建议是:

  1. 转至公共文件夹.
  2. 创建一个文件夹,最好命名为css.
  3. 为各个视图创建文件夹以使事情井井有条.
  4. 将相应的css放在这些文件夹中,这对您来说会更容易.

要么

如果你真的坚持将css放在views文件夹中,你可以尝试创建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);
Run Code Online (Sandbox Code Playgroud)

如果你真的想尝试做你的想法,试试这个:

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

但即使文件目录正确也无法工作,因为Laravel不会出于安全目的而这样做,Laravel非常爱你.

  • "Laravel非常爱你." - >好一个!(大声笑) (2认同)