繁体   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