使用Laravel 5在404 URL上拥有控制器
当用户点击一个不存在的url或者当我以编程方式强制一个App::abort(404)时,我需要有一个自定义控制器被触发 我怎么做 我的404视图需要一些数据,而一个简单的刀片视图(或ViewComposer)是不够的 谢谢使用Laravel 5在404 URL上拥有控制器,laravel,laravel-5,Laravel,Laravel 5,当用户点击一个不存在的url或者当我以编程方式强制一个App::abort(404)时,我需要有一个自定义控制器被触发 我怎么做 我的404视图需要一些数据,而一个简单的刀片视图(或ViewComposer)是不够的 谢谢 PS catch all URL不起作用,因为它们不能捕获以编程方式启动的404。编辑App\Exceptions\Handler类的render函数,并在此处添加有关404的内容: if ($this->isHttpException($exception) &
PS catch all URL不起作用,因为它们不能捕获以编程方式启动的404。编辑
App\Exceptions\Handler
类的render
函数,并在此处添加有关404
的内容:
if ($this->isHttpException($exception) && $this->getStatusCode() == 404) {
// Do what you want...
// You can even use the $request variable
}
完整示例:
public function render($request, Exception $exception)
{
if ($this->isHttpException($exception) && $this->getStatusCode() == 404) {
echo 'hello from 404 renderer';
dd($request); // Or you can a view.
}
return parent::render($request, $exception);
}
编辑
App\Exceptions\Handler
类的render
函数,并在此处添加有关404
的内容:
if ($this->isHttpException($exception) && $this->getStatusCode() == 404) {
// Do what you want...
// You can even use the $request variable
}
完整示例:
public function render($request, Exception $exception)
{
if ($this->isHttpException($exception) && $this->getStatusCode() == 404) {
echo 'hello from 404 renderer';
dd($request); // Or you can a view.
}
return parent::render($request, $exception);
}
如果异常为
404
,请尝试从处理程序的render()
方法返回一个重定向()
到您的自定义控制器
,而不是响应()
。您可以从$request
中检索请求的页面,对吗
以下是示例:
public function render($request, Exception $exception)
{
if ($this->isHttpException($exception) && $this->getStatusCode() == 404) {
return redirect(route('route.to.custom.controller'))->with('request', $request);
}
return parent::render($request, $exception);
}
希望这会有帮助,干杯 如果异常为404
,请尝试从处理程序的render()
方法返回一个重定向()
到您的自定义控制器
,而不是响应()
。您可以从$request
中检索请求的页面,对吗
以下是示例:
public function render($request, Exception $exception)
{
if ($this->isHttpException($exception) && $this->getStatusCode() == 404) {
return redirect(route('route.to.custom.controller'))->with('request', $request);
}
return parent::render($request, $exception);
}
希望这会有帮助,干杯 我需要使用控制器,因为我需要层次结构中的一些方法。我不确定使用太多控制器继承是安全的设计。也许您可以将这些助手方法从控制器中移开。但是假设,你知道你在做什么,我的方法不起作用,那么IDK如何在控制器中处理404(我仍然认为这不是正确的方法)为什么你认为这是不安全的?我有一些复杂的逻辑来构建页面。层次结构链并没有那个么大,我只有3层和一些共享视图逻辑。404也是一个复杂的页面,它需要一些共享逻辑。我无法将这些方法移动到helpers或ViewComponents中,因为它们在很大程度上取决于请求的页面。好的,你说得对!所以我猜你的架构对我来说太复杂了(我尽量避免复杂的架构,这就是为什么我也尽量避免控制器中的继承)。我帮不了你。顺便说一句,这是“安全的”,我同意,我刚才说的是“我认为安全的设计”。不管怎样,你的问题+1,希望你能得到你的答案!我需要使用控制器,因为我需要层次结构中的一些方法。我不确定使用太多控制器继承是安全的设计。也许您可以将这些助手方法从控制器中移开。但是假设,你知道你在做什么,我的方法不起作用,那么IDK如何在控制器中处理404(我仍然认为这不是正确的方法)为什么你认为这是不安全的?我有一些复杂的逻辑来构建页面。层次结构链并没有那个么大,我只有3层和一些共享视图逻辑。404也是一个复杂的页面,它需要一些共享逻辑。我无法将这些方法移动到helpers或ViewComponents中,因为它们在很大程度上取决于请求的页面。好的,你说得对!所以我猜你的架构对我来说太复杂了(我尽量避免复杂的架构,这就是为什么我也尽量避免控制器中的继承)。我帮不了你。顺便说一句,这是“安全的”,我同意,我刚才说的是“我认为安全的设计”。不管怎样,你的问题+1,希望你能得到你的答案!此方法强制执行不需要的301此方法强制执行不需要的301