大家好,我是 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
图片