猿问

如何在请求验证后使用 Laravel 在下拉列表中显示选定的值?

大家好,我是 laravel 的新手,在使用请求验证字段时遇到了一些问题:


controller有两种型号,加载设备信息到下拉列表:

    use App\Channel;  //channel model

    use App\Device;   //device model

    public function create()

    {

        return view('partials.channels.create',[

            'channel' => new Channel,

            'devices' => Device::latest()

        ]);

    }

    public function store(SaveChannelRequest $request)

    {

        Channel::create($request->validated());

        return redirect()->route('channels.index');

    }

请求“SaveChannelReques”有一些规则可以在数据库中添加信息,验证工作正常但是当返回错误时我无法加载下拉列表:

    public function rules()

    {

        $bypass = $this->channel->id ?? "";

        $rules = [

            'channel' => 'required|unique:channels,channel,'.$bypass.',id',

            'name' => 'required|unique:channels,name,'.$bypass.',id',

            'device' => 'required',

            'description' => 'required',

            'latitude' => 'nullable',

            'longitude' => 'nullable',

            'elevation' => 'nullable',

            'field1' => 'nullable',

        ];

        return $rules;

    }

看法:

<form class="bg-white shadow rounded py-3 px-4" method="POST" action="{{ route('channels.store') }}">

<div class="form-group">

    <label for="device">{{ __('Device') }}</label>

    <select id="device" name="device" class="form-control @error('device') is-invalid @enderror" autocomplete="device">

        <option value="" selected >@lang('Choose')...</option>

        @foreach($devices as $device)

            <option value="{{ old('device', $device->name) }}">{{ old('device', $device->name) }}</option>

        @endforeach

    </select>

    @error('device')

    <span class="invalid-feedback" role="alert">

        <strong>{{ $message }}</strong>

    </span>

    @enderror


  1. 图片

页面加载正常

验证字段没问题

验证请求后无加载数据


狐的传说
浏览 86回答 0
0回答
随时随地看视频慕课网APP
我要回答