在 Laravel Jetstream 注册中添加填充的选择下拉列表

Posted

技术标签:

【中文标题】在 Laravel Jetstream 注册中添加填充的选择下拉列表【英文标题】:Adding a populated select dropdown in Laravel Jetstream Registration 【发布时间】:2021-09-15 21:22:43 【问题描述】:

我是 Laravel 的新手,我正在尝试使用 Jetstream(Livewire) 进行身份验证。我已经成功创建了一个注册表单。但是,我希望根据数据库中的数据将输入字段更改为选择下拉字段。这是SO 中的同一个问题,但给出的答案是手动的。我在想这可能是one,但它可能与已经使用的 return 语句冲突(如果我错了,请纠正我)。

目前我的 Fortify/CreateNewUser 功能:

public function create(array $input)

    Validator::make($input, [
        'name' => ['required', 'string', 'max:255'],
        'user_name' => ['required', 'string', 'max:125'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => $this->passwordRules(),
        'user_role' => ['required', 'max:20'],
        'user_type' => ['required', 'max:20'],
        'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
    ])->validate();

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

Register.blade.php

...
        <div class="mt-4">
            <x-jet-label for="user_role" value=" __('Role') " />
            <x-jet-input id="user_role" class="block mt-1 w-full" type="text" name="user_role" required autocomplete="user_role" />
        </div>

        <div class="mt-4">
            <x-jet-label for="user_type" value=" __('Type') " />
            <x-jet-input id="user_type" class="block mt-1 w-full" type="text" name="user_type" required autocomplete="user_type" />
        </div>
...

【问题讨论】:

【参考方案1】:

CreateNewUser 只是 Fortify 消耗的一个动作。当您POST 数据时,它将执行验证并创建用户。

要自定义注册视图,您需要在

中指定

App\Providers\FortifyServiceProvider

use Laravel\Fortify\Fortify;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()

    Fortify::registerView(function () 
        $myOptions = MyModel::all();
        return view('auth.register', ['myOptions' => $myOptions]);
    );

    // ...

https://laravel.com/docs/8.x/fortify#registration

【讨论】:

以上是关于在 Laravel Jetstream 注册中添加填充的选择下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 laravel 8 +jetstream + spatie 为注册用户分配角色

如何从 Laravel 8 Jetstream 注册页面中的数据库中获取数据?

Laravel 8.15.0/Jetstream - 如何注册新刀片 x-jet-newblade?

使用 Jetstream 在 Laravel 8 中添加新 Livewire 组件时如何解决 RootTagMissingFromViewException 错误

如何将 Vuetify 3 添加到 Laravel 8 Jetstream + 惯性

CSS 不会在 XAMPP 上的 Laravel 8 + Jetstream 中加载