引导样式在Laravel 5.2的某些视图中不起作用

Ahm*_*sam 1 php twitter-bootstrap laravel laravel-5.2

我在Laravel 5.2中打招呼,我制作了一个简单的个人博客和这里的观点文件夹

视图文件夹

在home.blade.php我扩展'layouts.master',它使用bootstrap并且效果很好.现在我做了一个新的路线来显示特定的博客:

Route::group(['prefix'=>'post'], function(){
    Route::get('{id}', function(){
        return view('blog');
    });
});
Run Code Online (Sandbox Code Playgroud)

当我去http:// localhost:8000/post/1时它工作得很好,但是当我扩展layouts.master bootstrap和我的自定义css时问题不起作用!它适用于home.blade.php并正确地在pages/about.blade.php中工作,但是当我尝试为视图创建任何新路由并扩展layouts.master时它会扩展但是bootstrap和自定义css不起作用. 博客视图

知道为什么会这样吗?注意:我的css和bootstrap在公共文件夹中.

Ohg*_*why 9

@ThomasKim绝对正确.引导文件的路径是相对的.所以当你在localhost:8000它上面时它可以正确地遍历到css/bootstrap.min.css.

但是,当您启用时/post/1,css文件的URL请求将更改为:

localhost:8000/post/1/css/bootstrap.min.css
Run Code Online (Sandbox Code Playgroud)

我们知道这是不正确的.要解决此问题,请通过预先添加a来使用绝对路径/.

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

这将确保它始终尝试从public/css/bootstrap.min.css遍历文件.public在URL结构中省略,但这是所有HTTP请求解析的位置.

UPDATE

实际上最好使用Laravel assetsecure_asset函数来解析这些资产:

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

asset助手将直接从解决/public

请注意,asset将使用schema页面请求来解析依赖关系,而无论请求的架构是什么,secure_asset都将强制依赖https.


Wes*_*lar 7

为了让生活更加轻松,请使用Laravel的asset()帮助器:

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

是的,它提供与引用它完全相同的东西,简单地说是"/ css/...",但我发现这是一个很好的做法,特别是当事情在以后的某些方面变得更加先进时.