[英]Laravel firstOrFail functions redirects to wrong route
信息:我所有的路線都像/locale/something
,例如/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()
方法的任何地方進行處理。
如建議的注釋所示,您可以在Global Exception Handler中定義它:
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.