[英]Backpack for Laravel - Permissionmanager: Can't create new user
我有以下問題。 我正在使用帶有PermissionManager Extension.
Backpack for Laravel PermissionManager Extension.
默認情況下,您必須通過您的電子郵件地址登錄。 但是,您可以更改該名稱以使用用戶名登錄。 如果我(例如)為數據庫播種,則工作正常。 但是出於某些奇怪的原因,我無法通過PermissionManager PermissionManager Extension
創建新用戶。 如果我嘗試以下錯誤消息是結果:
SQLSTATE [HY000]:常規錯誤:1364字段'名'沒有默認值(SQL:插入到
users
(updated_at
,created_at
)值(2018年11月29日22時26分32秒,2018年11月29日22 :26:32))
僅出於測試目的,我為name
列提供了默認值,但是錯誤消息是相同的,除了現在的錯誤是:
Field 'username' doesn't have a default value.
它只占用我數據庫中的下一列。
當然,我已經更改了CRUD-Requests,Form-Requests等,以存儲用戶名而不是電子郵件。 但看起來Request並沒有獲取我的表單值。 它僅嘗試存儲時間戳。
奇怪的事情:如果我顛倒了我在Controllers中所做的所有工作,依此類推,然后再次創建電子郵件列,它將正常工作...我是否忽略了某些內容? 如何解決此錯誤,並使用用戶名而不是電子郵件存儲用戶?
甚至更奇怪...數據被發布。
編輯2:
仔細查看錯誤消息后,我發現了以下內容: 如您所見,帶有我填寫的數據的數組仍然在這里。 但是,在下一個實例中, parameters
數組和$instance
數組完全為空。
步驟1:為了使用用戶名,您必須編輯app / Http / Controllers / Auth / LoginController並添加一個名為username的新方法
public function username(){
return 'username';
}
步驟2:在“用戶”模型中,確保您使用AuthenticatesUsers特征,並在可填充數組中添加用戶名字段。 步驟3:確保在app / Http / Controllers / Auth / RegisterController中添加了用戶名驗證並在create方法中添加了用戶名字段。
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'username' => $data['username'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
就這樣。 希望它能解決您的問題。
當這個問題發生在我身上時,我認為是由運行php artisan vendor:publish
而不是按照說明運行php artisan vendor:publish --provider="Backpack\\PermissionManager\\PermissionManagerServiceProvider
。
我的config/laravel-permission.php
文件不僅具有許可權和用戶模型不正確,而且整個文件是spatie的版本,而不是Laravel Backpack的版本。 我的猜測是,spatie的vendor:publish
寄存器通常在Laravel Backpack PermissionManager之前運行。
以前從未使用過此軟件包,但是我從github上查看了此軟件包的文件以解決您的問題,我在UserCrudController.php
文件中看到了一些東西。 該文件提供默認的用戶CRUD操作。 創建和更新表單項通過此控制器中的設置方法定義。 但我看不到username
段的任何定義。
據我了解,您的用戶表具有username
並且在模型中$fillable
變量包含username
,並且用戶創建/更新表單不會將username
段發布到控制器。
您可以嘗試在UserCrudController.php
文件中為username
定義username
表單元素,還是從模型的$ UserCrudController.php
刪除username
屬性。
希望這些可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.