laravel 資源路由,模型繫結之user模型的坑
阿新 • • 發佈:2020-08-11
首先介紹背景,
簡簡單單的資源路由:
//----------管理員 管理---------- Route::resource('adminUser', 'UserController');
簡簡單單的資源控制器並綁定了User模型,
這裡只貼出一部分,主要是$user的問題
/** *修改 展示 */ public function edit(User $user) { echo '我是edit,看到我說明你訪問到這個方法了'; dump($user); exit(); }
接著看,這是訪問edit的路由
然後,訪問edit看結果
可以確認的是確實訪問到了,edit這個方法了,但是根據列印結果,可以知道$user是個空物件,沒有值。。。
下面我們做些調整,其他的都不變 ,改變一下路由,由adminUser改為user
//----------管理員 管理---------- Route::resource('user', 'UserController');
檢視,更改後的edit路由
,再次訪問edit
此時就可以正常得到$user了,
也就是說,資源路由的名字必須與模型名字相同,且是小寫的,變成大寫的就得到空物件,這是什麼原因?其實我也不知道,我覺得無論路由的名字(像大小寫,或者像上面的那種情況)怎麼寫,都是指向那個控制器中的edit方法,方法用了依賴注入綁定了User模型,只要在訪問的時候給個id,按理說應該可以訪問到的,因為路由只是改變的訪問的url,其他的不影響吧,laravel自動根據id獲取模型例項,所以$user不應該是空物件,但事實證明還真不能亂寫。。。。