使用Laravel 4中的动态内容进行制作和错误视图

时间:2015-03-19 16:27:18

标签: php laravel laravel-4

我正在使用Laravel 4完成我的第一个基于Web的应用程序,它几乎完成了,我遇到的问题如下:

我正在尝试使用动态内容制作自定义404错误视图,我有一个表格,其中包含从DB填充的几个选项,我通过Base控制器执行此操作:

protected function setupLayout() {
    if (!is_null($this->layout)) {
        $this->layout = View::make($this->layout);
    }

    View::composer('templates.partials.footer', function ($view) {
        $languages = array('' => 'Choose Language Pair:') + Language::orderBy('order')->lists('name', 'id');
        $view->with('languages', $languages);
    });
}

此表单需要存在于整个Web中,并且在所有视图中都可以正常工作但错误一,当我输入一个无效的URL时,php错误会显示告诉我页脚视图中的变量$ languages是未定义的。我尝试从默认模板中取出页脚,效果很好。

以下是我处理错误的方法: -in the global.php

App::error(function(Exception $exception, $code) {
    //Log::error($exception);
    return BaseController::handleError($code);
});

- 和BaseController中的方法:

protected function handleError($code) {
    //return View::make('404' . $code);

    switch ($code) {
        case 403:
            return Response::view('404', array(), 403);
        case 404:
            return Response::view('404', array(), 404);
        case 500:
            return Response::view('404', array(), 500);
        default:
            return Response::view('404', array(), $code);
    }
}

正如你所看到的,我已经尝试过使用Response :: view但它似乎没有加载将数据发送到表单的View :: composer,反过来使用返回View :: make isn不好,因为我因为SEO的原因需要它是一个错误。

因此...

有没有办法在浏览器中获取错误时将动态数据发送到错误视图?

先谢谢!

1 个答案:

答案 0 :(得分:0)

我相信你的控制器在404错误期间不会加载意味着你的BaseController永远不会被命中。

我建议您将基本控制器中的视图编辑器逻辑放入app/start/global.php