当前位置: 首页 > 知识库问答 >
问题:

Laravel 8 Jetstream:为注册过程添加新字段

马飞
2023-03-14

我开始使用Laravel 8构建一个web应用程序。我注意到,在Laravel 8中有很多事情发生了变化,包括身份验证。现在,我正在尝试使用Jetstream进行身份验证。

我运行了以下命令将其集成到应用程序中。

composer require laravel/jetstream
php artisan jetstream:install inertia
npm install && npm run dev

当我转到/注册路由时,我可以看到带有姓名、电子邮件、密码和密码确认字段的注册表。我想做的是,我想添加另一个名为“公司”的字段,我想对其应用自定义验证规则。

我在Jetstream留档上发现,我可以在Jetstream ServiceProvider类的引导方法中自定义身份验证过程,如下所示。

Fortify::authenticateUsing(function (Request $request) {
            
        });

但它不适用于注册。我如何自定义注册过程,添加新字段并应用自定义验证规则?

共有2个答案

萧麒
2023-03-14
匿名用户

@然而,如果你们中使用惯性的人还有一个额外的步骤,阿里的回答是正确的。你需要打开resources/js/Pages/Auth/Register。vue,并将所需字段添加到表单中。此外,向下滚动到文件的底部,并将字段名添加到此$缺乏活力表单输入参数对象文字。例如,如果所需的附加字段名是company,您可以这样添加它:

data() {
  return {
    form: this.$inertia.form({
      name: '',
      company: '', // <- New line here
      email: '',
      password: '',
      password_confirmation: '',
      terms: false,
    })
  }
},

符风畔
2023-03-14

首先,您应该使用数据库迁移2014\u10\u12\u000000\u创建用户表中的迁移将公司字段添加到用户表中。php。

public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->string('company');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->foreignId('current_team_id')->nullable();
            $table->text('profile_photo_path')->nullable();
            $table->timestamps();
        });
    }

然后运行这个命令php artisan migrate:fresh来迁移您的新用户表。

然后将该字段添加\app\Models\User中的用户模型内的可填充数组中。php类似:

protected $fillable = [
    'name',
    'company',
    'email',
    'password',
];

现在,您可以在resources\views\auth\register下找到注册视图。刀身php,然后可以复制输入块,将其用于“公司”字段。

然后你可以在这个类中进行验证:app\Actions\Fortify\CreateNewUser。php

public function create(array $input)
    {
        Validator::make($input, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'company' => ['required', 'string', 'max:255'],
            'password' => $this->passwordRules(),
        ])->validate();

        return User::create([
            'name' => $input['name'],
            'email' => $input['email'],
            'company' => $input['company'],
            'password' => Hash::make($input['password']),
        ]);
    }

那么,你准备好了。

 类似资料:
  • 问题内容: 我在AngularJS中具有以下 静态 形式: Angular为我创建了一个FormController并将其发布到范围内(在表单名称下)。这意味着我可以访问以下属性: 这超级有用! 但就我而言,我正在使用指令 动态 构建表单: 该指令不解决实际元素,直到一段时间后(我已经从服务器获得的一些数据,链接的指令等)。 这里的问题是在表单控制器上没有定义任何字段属性,就像动态字段未向Form

  • 我在.write中添加了,但仍然重复用户名。然后我添加了使用户名至少有3个字符,以查看如果注册过程更长,注册过程是否会失败,但它创建了电子邮件\password和其他东西,但没有在数据库root\users\中写入任何数据 在用email\password注册新用户后,我得到了这个错误,这意味着用户名不能超过3个字符。在这种情况下,如何停止注册进程并显示警报消息? [Firebase/Databa

  • 如何向现有集合中的每个文档添加新字段? 这是我迄今为止所尝试的

  • 我们正在使用实例ID API切换通知架构体系,以使用新的GCM 3.0注册机制。以前我们使用旧的机制使用GCMRegistrar.register()方法。 我们遇到的问题是,我们注意到,如果设备是用旧的GCMRegistar注册的,那么在更新并用新的实例ID API注册之后,两个注册令牌都是有效的,并且可以接收通知。 我预计旧的注册令牌将被停用,并且当向旧令牌发送通知时,我们的推送服务器将收到规

  • 我正在寻找注册证书的程序。 我搜索了很多,但没有找到一个好的答案。到目前为止,我明白首先我必须生成一个密钥存储(用于创建公钥和私钥),然后私钥应该保持私有,公钥与其他信息(如名称和组织)一起发送给CA。然后CA会生成一些东西,并给我一些包含公钥和信息的东西。 CA会生成什么?什么是P12文件?

  • 例一: !include WinMessages.nsh Section "MainSection" SEC01 File /oname=$FONTS\tahoma.ttf tahoma.ttf Push "$FONTS\tahoma.ttf" System::Call "Gdi32::AddFontResource(t s) i .s" Pop $0 IntCmp $0 0 0 +2 +2 Me