Php Laravel firstOrFail函数重定向到错误路径
信息:我所有的路线看起来都像这样,例如Php Laravel firstOrFail函数重定向到错误路径,php,laravel,laravel-5,exception,request,Php,Laravel,Laravel 5,Exception,Request,信息:我所有的路线看起来都像这样,例如/en/home 很好 在我的控制器中,我正在使用firstOrFail()函数 当触发故障部件时,功能会尝试将我发送到/home。 这不起作用,因为它需要是/en/home 那么,如何调整firstOrFail()函数以将我发送到/locale/home? 什么需要改变?你可以用几种方法来处理它 具体做法 每次找不到记录时,只要您想重定向到特定视图,就可以使用try-catch将查询包围起来: class MyCoolController extends
/en/home
很好
在我的控制器中,我正在使用firstOrFail()
函数
当触发故障部件时,功能会尝试将我发送到/home
。
这不起作用,因为它需要是/en/home
那么,如何调整firstOrFail()
函数以将我发送到/locale/home
?
什么需要改变?你可以用几种方法来处理它 具体做法 每次找不到记录时,只要您想重定向到特定视图,就可以使用try-catch将查询包围起来:
class MyCoolController extends Controller {
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Redirect;
//
function myCoolFunction() {
try
{
$object = MyModel::where('column', 'value')->firstOrFail();
}
catch (ModelNotFoundException $e)
{
return Redirect::to('my_view');
// you could also:
// return redirect()->route('home');
}
// the rest of your code..
}
}
唯一的缺点是,您需要在任何地方使用firstOrFail()
方法处理此问题
全球方式
如建议的注释所示,您可以在以下内容中定义它:
app/Exceptions/Handler.php
# app/Exceptions/Handler.php
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Support\Facades\Redirect;
// some code..
public function render($request, Exception $exception)
{
if ($exception instanceof ModelNotFoundException && ! $request->expectsJson())
{
return Redirect::to('my_view');
}
return parent::render($request, $exception);
}
Fail抛出一个异常,然后在
Exceptions\Handler
类中处理该异常,并显示一个错误页面。因此,您可能正在自己处理此问题,并将其重定向到主页。看起来它会帮助你,通常它会返回一个404而不重定向到另一个url。检查您的异常处理程序。@q55awr很乐意帮助您。