在 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 注册中添加填充的选择下拉列表的主要内容,如果未能解决你的问题,请参考以下文章