[英]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.