我是Laravel 5.2的初学者,我制作了一个简单的个人博客和这里的观点文件夹
在home.blade.php我扩展' layouts.master'它使用bootstrap,效果很好。 现在我开辟了一条新的路线来展示特定的博客:
Route::group(['prefix'=>'post'], function(){
Route::get('{id}', function(){
return view('blog');
});
});
当我转到http://localhost:8000/post/1时,它的效果很好,但是当我扩展layouts.master bootstrap和我的自定义css时问题不起作用! 它适用于home.blade.php并正确地在pages / about.blade.php中工作,但是当我尝试为视图创建任何新路由并扩展layouts.master时它会扩展但bootstrap和自定义css不起作用。
知道为什么会这样吗? 注意:我的css和bootstrap在公共文件夹中。
答案 0 :(得分:9)
@ThomasKim绝对正确。引导文件的路径是相对的。因此,当您在localhost:8000
时,它可以正确地遍历到css/bootstrap.min.css
。
但是,当您在/post/1
时,css文件的URL请求将更改为:
localhost:8000/post/1/css/bootstrap.min.css
我们知道这是不正确的。要解决此问题,请通过添加/
。
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
这将确保它始终尝试从public / css / bootstrap.min.css遍历文件。 URL结构中省略了public
,但这是所有HTTP请求解析的地方。
<强>更新强>
实际上,最好使用Laravel的asset
或secure_asset
函数来解析这些资产:
<link href="{{ asset('css/bootstrap.min/css') }} rel="stylesheet"/>
asset
帮助程序将直接从/public
请注意,asset
将使用页面请求的schema
来解析依赖关系,而secure_asset
将强制依赖https
,无论模式是什么请求是。
答案 1 :(得分:6)
为了让生活更加轻松,请使用Laravel的asset()帮助器:
<link href="{{ asset('/css/stylesheet.css') }}" rel="stylesheet"/>
是的,它提供了与引用它完全相同的东西,简单地说是“/ css / ...”但我发现它是一种很好的做法,特别是当事情在以后的某些方面变得更加先进时。
答案 2 :(得分:3)
您必须使用
<link rel="stylesheet" type="text/css" href="css/app.css">
在您的主刀片布局模板中,这就是为什么要面对这个问题
使用
<link rel="stylesheet" type="text/css" href="/css/app.css">
这将解决问题。
只需在css文件路径前附加一个正斜杠/
,它指示项目的公共目录。