Laravel/Jetstream:注册表中动态填充下拉列表

问题描述 投票:0回答:1

我观看了几个关于Laravel/JetStream注册系统的注册形式定制的视频并阅读了一些相关教程。我发现的都是这样的:

//resources/views/auth/register.blade.php

<div class="mt-4">
    <x-label for="gender" value="{{ __('Gender') }}" />
    <x-dropdown id="gender" class="block mt-1 w-full" name="gender" :value="old('gender')" required>
        <x-slot name="content">
            <option value="0">Select Gender</option>
            <option value="1">Female</option>
            <option value="2">Male</option>
        </x-slot>
    </x-dropdown>
</div>

但是我想从数据库表中填充性别下拉列表,例如“性别”。

为此,我创建了一个性别模型。

我需要做的就是添加以下行

//this line will be in a file but which one?
$genders = Genders::all();

然后我将能够在视图中列出项目,如下所示:

<div class="mt-4">
    <x-label for="gender" value="{{ __('Gender') }}" />
    <x-dropdown id="gender" class="block mt-1 w-full" name="gender" :value="old('gender')" required>
        <x-slot name="content">
            <option value="0">Select Gender</option>
            @foreach ($genders as $gender)
                <option value="{{$gender->id}}">{{$gender->name}}</option>
            @endforeach
        </x-slot>
    </x-dropdown>
</div>

我已将以下代码添加到 app/Providers/FortifyServiceProvider.php 中

<?php

namespace App\Providers;

use App\Actions\Fortify\CreateNewUser;
use App\Actions\Fortify\ResetUserPassword;
use App\Actions\Fortify\UpdateUserPassword;
use App\Actions\Fortify\UpdateUserProfileInformation;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
use Laravel\Fortify\Fortify;
use App\Models\Gender;

class FortifyServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //I have added this but no change ):

        Fortify::registerView(function () {
            $genders = Gender::all();
            return view('auth.register', ['genders' => $genders]);
        });
    }

我找不到应该在哪里放置代码

$genders = Genders::all();
并通过
$genders
查看
register.blade.php
?这对于一些选项来说可能很简单,但是如果我想列出国家/地区,该怎么办?

laravel laravel-10 laravel-jetstream
1个回答
0
投票

我从来不知道这这么容易:

我已添加

        //
    Fortify::registerView(function () {
        $genders = Gender::all();
        return view('auth.register', ['genders' => $genders]);
    });

进入

boot()
 中的 
app/Providers/AuthServiceProvider.php

功能
<?php

namespace App\Providers;

// use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Laravel\Fortify\Fortify;
use App\Models\Gender;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The model to policy mappings for the application.
     *
     * @var array<class-string, class-string>
     */
    protected $policies = [
        //
    ];

    /**
     * Register any authentication / authorization services.
     */
    public function boot(): void
    {
        //
        Fortify::registerView(function () {
            $genders = Gender::all();
            return view('auth.register', ['genders' => $genders]);
        });
    }
}

现在我可以看到一个动态填充的下拉列表。

© www.soinside.com 2019 - 2024. All rights reserved.