1. 程式人生 > 實用技巧 >修改Laravel自帶的認證系統的User類的名稱空間的步驟

修改Laravel自帶的認證系統的User類的名稱空間的步驟

剛建立了一個新的Laravel 5.3專案,想要使用Laravel自帶的認證功能。

但是我們都知道,Laravel預設情況下的Model都是放在app目錄下的,也就是說其名稱空間是App.但是有時候我們希望app目錄能夠更加整潔一點,所以想要把各個Model都統一放在Model目錄下。

由於Laravel的app目錄遵循了psr-4標準,也就是說會是用composer按照psr-4標準對各個類進行自動載入。如果我們直接修改目錄,而不修改對應的名稱空間的話,是無法正常載入這些Model類的。

所以,將User.php檔案移動到了新的Model資料夾下的時候,需要同時將User類的namespace修改為App\Model。然後,需要執行

composer dumpautoload 

命令,將修改後的類自動載入進來。

接著繼續進行認證系統的建立。

在執行了

php artisan make:auth 

命令之後,在正常情況下,已經可以實現正常的註冊、登入等功能了。

但是在修改完User的名稱空間後,會發現出現了找不到User類的錯誤。我們剛才已經重新載入了User類,為什麼還會出現找不到的問題?

仔細想想我們就會發現,由於登入、註冊用到的程式碼都是Laravel框架自帶的,預設情況下,它們會認為User類還在App名稱空間下,所以登入的時候,會出現錯誤。

如何解決呢?

在config/auth.php檔案裡,可以找到providers,在其中driver是eloquent的那一組中,可以看到model選項,預設為App\User::class,將其修改為App\Model\User::class即可。

這樣應該就可以正常登入了。

所以總結一下,如果想要修改User的名稱空間的話,需要以下幾步:

新建Model資料夾,移動User.php到該資料夾下

修改User.php的namespace為App\Model

執行composer dumpautoload,重新載入類

將config/auth.php檔案中的providers部分的model對應的類,修改為App\Model\User::class

以上這篇修改Laravel自帶的認證系統的User類的名稱空間的步驟就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援碼農教程。