Laravel 3:错误响应没有扩展基本控制器(定义资产的地方)


Laravel 3: Error responses not extending base controller (where assets are defined)

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

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错误控制器没有扩展基本控制器。

任何简单的方法绕过这一点,而不需要重新申报我的资产或其他什么。我认为在刀片布局中声明我的所有资产不是最好的方法。

啊哈!

我刚想好了。

答案是使用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来将资产应用到它。

Et voila-现在我的404视图也在加载正确的资产。