亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在laravel中使用路由ID作為用戶進行身份驗證

如何在laravel中使用路由ID作為用戶進行身份驗證

PHP
忽然笑 2021-12-03 15:05:58
我想在我的登錄系統中使用 auth 有兩個角色:行政用戶。當我將路由重定向到用戶時,它失敗了。我的控制器:public function profile($id){    $santri = Santri::find($id);    return view('santri.profile', ['santri'=>$santri]);}我的路線:Route::group(['middleware' => ['auth', 'checkRole:admin,user']], function () {    Route::get('/santri/{id}/profile', 'SantriController@profile')->name('profiluser');});我如何檢查角色:{    $santri = Santri::all();    if(in_array($request->user()->role,$roles))    {        return $next($request);    }    return redirect()->route('profiluser', $santri);}錯誤:缺少 [Route: profiluser] [URI: santri/{id}/profile] 的必需參數。
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

錯誤信息:


缺少 [Route: profiluser] [URI: santri/{id}/profile] 的必需參數。


告訴您您缺少此路線的參數: profiluser


正如你在這里看到的,你沒有使用正確的參數調用路由,你試圖傳遞整個對象而不是 id,所以而不是這樣:


return redirect()->route('profiluser', $santri);

做這個:


return redirect()->route('profiluser', $santri->id);

但是既然你已經傳遞了整個對象,你也可以這樣做,讓我們稱之為方法 B。


在這里,您要使用傳遞的 id 查找模型:


public function profile($id)

{

    $santri = Santri::find($id);


    return view('santri.profile', ['santri'=>$santri]);

}

但是由于您已經傳遞了整個對象,您可以這樣做:


public function profile(Santri $santri)

{

    return view('santri.profile', ['santri' => $santri]);

}

或者這個,在我看來更清晰:


public function profile(Santri $santri)

{

    return view('santri.profile', compact('santri'));

}


查看完整回答
反對 回復 2021-12-03
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

您需要傳遞$santry->id而不僅僅是 $santry。將行更改為:

return redirect()->route('profiluser', [$santri->id]);


查看完整回答
反對 回復 2021-12-03
?
當年話下

TA貢獻1890條經驗 獲得超9個贊

根據您的路線:

Route::get('/santri/{id}/profile', 'SantriController@profile')->name('profiluser');

您必須傳遞用戶 ID,如下所示:

return redirect()->route('profiluser', ['id' => $request->user()->id]);


查看完整回答
反對 回復 2021-12-03
  • 3 回答
  • 0 關注
  • 299 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號