Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 4中动态内容的制作和错误视图_Php_Laravel_Laravel 4 - Fatal编程技术网

Php Laravel 4中动态内容的制作和错误视图

Php Laravel 4中动态内容的制作和错误视图,php,laravel,laravel-4,Php,Laravel,Laravel 4,我正在使用Laravel 4完成我的第一个基于web的应用程序,它几乎完成了,我遇到的问题如下: 我正在尝试使用动态内容创建自定义404错误视图,我有一个表单,其中包含从DB填充的两个选择,我通过基本控制器执行此操作,如下所示: protected function setupLayout() { if (!is_null($this->layout)) { $this->layout = View::make($this->layout); }

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

我正在尝试使用动态内容创建自定义404错误视图,我有一个表单,其中包含从DB填充的两个选择,我通过基本控制器执行此操作,如下所示:

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错误告诉我footer视图中的变量$languages未定义。我试着从默认模板中删除页脚,效果非常好

以下是我如何处理我的错误: -在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,而使用return view::make的另一种方法也不好,因为出于SEO原因,我需要它成为一个错误

所以

在浏览器中获取错误时,是否有方法将动态数据发送到错误视图


谢谢

我相信您的控制器在404错误期间不会加载,这意味着您的BaseController永远不会被击中


我建议将您的视图生成器逻辑放在basecontroller中的
app/start/global.php
中。

谢谢您的帖子,我尝试了,复制了view::composer(…)。。。应用程序内部的global.php文件中的代码:错误。。。而且也不起作用。。。我做的对吗?请尝试在
App::error()
之外添加它。如果它在那里,如果没有异常发生,它就永远不会被加载。太棒了!非常感谢你,真是妙极了!