[英]Laravel 5.5 form model binding User
我正在學習laravel,遇到以下錯誤,我想知道是否有人可以幫助我解決它。 我有一個名為User的模型和一個受控調用UserController,我嘗試使用模型綁定來創建編輯,更新和銷毀。 在編輯功能中,我有以下代碼。
public function edit(User $user)
{
dd($user);
}
該函數返回:
User {#191 ▼
#fillable: array:3 [▶]
#dates: array:1 [▶]
#hidden: array:2 [▶]
#connection: null
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: false
+wasRecentlyCreated: false
#attributes: []
#original: []
#changes: []
#casts: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#visible: []
#guarded: array:1 [▶]
#rememberTokenName: "remember_token"
#forceDeleting: false
}
如果我刪除模型用戶
public function edit($user)
{
dd($user);
}
在這種情況下,返回正在編輯的用戶的ID / usuario / 24 / edit
"24"
路線聲明如下
Route::resource('/usuario','UsuarioController');
我想知道是否有人知道如何解決此問題,因為該函數應該引用User模型,然后再引用$ user變量,如果有人知道如何解決它或者我做錯了事,那將有很大的幫助
您在這里報告的內容沒有問題。 這是所需的Laravel Framework行為。
如果您像在第一個示例中那樣鍵入提示模型,Laravel會嘗試執行以下操作:
$user = User::findOrFail($user)
但是,當您不鍵入提示時,laravel不知道應該使用該ID加載哪個模型,因此它只會傳遞用戶在請求參數中提供的id
。
更改您的代碼,如下所示:
// At the top of your controller add a use statement
use App\User;
class UserController extends Controller
{
// ▼ This is the typehint
// ▼ The parameter name should be the same resource name used on route
public function edit(User $usuario)
{
dd($usuario);
}
}
為了使模型綁定在控制器操作中起作用,您必須使用與您在Route聲明中使用的參數匹配的變量名,請嘗試以下操作:
public function edit(User $usuario)
由於在路線中您聲明tu使用“ usuario”作為參數,因此模型綁定將搜索相同名稱的變量。
您可以使用php artisan route:list
檢查參數名稱
它也寫在laravel文檔中,關於模型綁定:
Laravel自動解析在路由或控制器操作中定義的口才模型,其類型提示的變量名稱與路由段名稱匹配
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.