Laravel 3:错误响应未扩展基本控制器(定义资产)

时间:2013-12-12 11:33:40

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

我可能会以错误的方式接近这个,但在我的Base Controller中,我在构造中定义了我的Asset容器“header”,例如:

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

当我所有其他控制器扩展基本控制器时,这工作正常,当我调用

时,我的assests被置于头容器中
{{Asset::container('header')->styles()}}

在我的master.blade.php

但是,当触发404时

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

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

任何简单的方法都可以解决这个问题,而无需重新审视我的资产或其他内容我假设在刀片布局中声明我的所有资产并不是最好的方法。

1 个答案:

答案 0 :(得分:0)

啊哈!

我刚刚完成了它。

答案是使用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瞧 - 现在我的404视图也正在加载正确的资产。