簡體   English   中英

Laravel背包-Permissionmanager:無法創建新用戶

[英]Backpack for Laravel - Permissionmanager: Can't create new user

我有以下問題。 我正在使用帶有PermissionManager Extension. Backpack for Laravel PermissionManager Extension. 默認情況下,您必須通過您的電子郵件地址登錄。 但是,您可以更改該名稱以使用用戶名登錄。 如果我(例如)為數據庫播種,則工作正常。 但是出於某些奇怪的原因,我無法通過PermissionManager PermissionManager Extension創建新用戶。 如果我嘗試以下錯誤消息是結果:

SQLSTATE [HY000]:常規錯誤:1364字段'名'沒有默認值(SQL:插入到usersupdated_atcreated_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM