1. 程式人生 > 實用技巧 >laravel 資源路由,模型繫結之user模型的坑

laravel 資源路由,模型繫結之user模型的坑

首先介紹背景,

簡簡單單的資源路由:

 //----------管理員  管理----------
    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不應該是空物件,但事實證明還真不能亂寫。。。。