Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
使用Laravel 5在404 URL上拥有控制器_Laravel_Laravel 5 - Fatal编程技术网

使用Laravel 5在404 URL上拥有控制器

使用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) &

当用户点击一个不存在的url或者当我以编程方式强制一个App::abort(404)时,我需要有一个自定义控制器被触发

我怎么做

我的404视图需要一些数据,而一个简单的刀片视图(或ViewComposer)是不够的

谢谢


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