我正在使用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的原因需要它是一个错误。
因此...
有没有办法在浏览器中获取错误时将动态数据发送到错误视图?
先谢谢!
答案 0 :(得分:0)
我相信你的控制器在404错误期间不会加载意味着你的BaseController永远不会被命中。
我建议您将基本控制器中的视图编辑器逻辑放入app/start/global.php
。