Hi guys i'm new using laravel and I have somo problems when use a request to validate fields:
- Controller has two model, and load device information to dropdown:
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');
}
- Request "SaveChannelReques" has some rules to add information on database, validations work fine but when return error I can't load the dropdown:
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;
}
- View:
<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
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label for="channel">{{ __('Channel') }}</label>
<input id="channel" type="text" class="form-control bg-light shadow-sm @error('channel') is-invalid @enderror" name="channel" value="{{ old('channel', $channel->channel) }}" autocomplete="channel" autofocus>
@error('channel')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="form-group col-md-6">
<label for="name">{{ __('Name') }}</label>
<input id="name" type="text" class="form-control bg-light shadow-sm @error('name') is-invalid @enderror" name="name" value="{{ old('name', $channel->name) }}" autocomplete="name" autofocus>
@error('name')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
</form>
- Images