【发布时间】:2014-12-17 06:10:55
【问题描述】:
我的页面使用全局布局,并且有许多带有自己的控制器的视图正在使用此布局。从控制器动作调用的视图如下:
class NewsController extends BaseController {
protected $layout = 'layouts.master';
public function index()
{
$news = News::getNewsAll();
$this->layout->content = View::make('news.index', array(
'news' => $news
));
}
}
我想以同样的方式创建一个自定义 404 页面,因为我需要嵌套自定义 404 设计的正常页面布局。有可能吗?问题是我无法从控制器将 HTTP 状态代码设置为 404,所以它只是一个软 404。我知道正确的方法是在App::missing() 中从filter.php 发送Response::view('errors.404', array(), 404),但我不能只在视图中设置布局,这还不够。还是我错了,有可能以某种方式?
谢谢!
更新: 我用我在项目中使用的文件为这个问题创建了一个Gist。也许它有助于更多地了解我目前的状态。
【问题讨论】:
-
如果
$news为空,是否要显示另一个视图? -
@Marwelln 我们已经有了更长的对话here,但仍然没有解决方案。
-
Response::view('layouts.errors', ['content' => View::make('errors.404')], 404)将使用布局文件并将$content变量设置为errors.404的内容。 -
它会抛出
Call to undefined function view()错误。如果我将其更改为Response::view('layouts.master', ['content' => View::make('errors.missing')], 404);,则错误将为Error in exception handler: Undefined variable: shared (View:master.blade.php)
标签: php layout laravel-4 error-handling