【问题标题】:Laravel 3: Error responses not extending base controller (where assets are defined)Laravel 3:错误响应未扩展基本控制器(定义资产)
【发布时间】:2013-12-30 19:08:15
【问题描述】:

我可能以错误的方式处理这个问题,但在我的基本控制器中,我已经在构造中定义了我的资产容器“标题”,例如:

Asset::container('header')->add('main-css', 'css/style.css');
// etc

由于我的所有其他控制器都扩展了基本控制器,因此工作正常,并且当我调用时,我的资产被放置在标题容器中

{{Asset::container('header')->styles()}}

在我的 master.blade.php 中

但是,当触发 404 时

Event::listen('404', function()
{
    return Response::error('404');
});

我的样式没有加载。我认为这是因为 laravel 错误控制器没有扩展基本控制器。

无需重新声明我的资产或其他任何东西的任何简单方法。我假设在刀片布局中声明我的所有资产并不是最好的方法。

【问题讨论】:

    标签: php controller laravel http-status-code-404 laravel-3


    【解决方案1】:

    啊哈!

    我刚刚解决了。

    答案是使用View Composers(我从未正确研究过的 Laravel 概念之一..)

    所以在我的 routes.php 中(临时放置 - 我应该将作曲家放在他们自己的自动加载文件中)我刚刚添加了以下内容。

    View::composer(array('layout.master'), function($view)
    {
        Asset::container('header')->add('bootstrap-css', 'bundles/bootstrapper/css/bootstrap.min.css');
        Asset::container('header')->add('main-css', 'css/style.css');
    
        Asset::container('footer')->add('bootbox', 'js/vendor/bootbox.min.js');
    
    });
    

    鉴于我拥有的每个前端文件都使用 /views/layout/master.blade.php,那么我知道我可以通过将“layout.master”传递给 View::composer 来应用资产。

    瞧——现在我的 404 视图也在加载正确的资产。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 2019-09-21
      • 2016-04-05
      • 1970-01-01
      相关资源
      最近更新 更多