Канал ввода формы не переходит к объекту запроса Laravel

#javascript #php #html #laravel #eloquent

#JavaScript #php #HTML #Laravel #Красноречивый

Вопрос:

У меня есть форма, которая содержит ввод пола в виде переключателя, но когда я пытаюсь отправить с пустым значением, элемент переключателя не попадает в объект запроса, имя которого в примере ниже — jenis_kelamin . Но если jenis_kelamin имеет значение, то элемент jenis_kelamin будет введен в объект запроса.

Мне нужен элемент в объекте запроса, потому что, если радиоэлемент пуст, появится ошибка с требуемым сообщением ввода. Итак, я надеюсь, что радиовход попадает в объект запроса, когда значение пустое, и почему это происходит.

 Routes

Route::get('/mahasiswas/create', 'MahasiswaController@create')->name('mahasiswas.create');
Route::post('/mahasiswas', 'MahasiswaController@store')->name('mahasiswas.store');

Controller

public function create(){
  return view('form-pendaftaran');
}
public function store(Request $request){
   dump($request);
}
  

Вид

 <form action="{{route('mahasiswas.store')}}" method="post">
@csrf
<div class="form-group">
   <label>Jenis Kelamin</label>
   <input type="radio" name="jenis_kelamin" id="laki-laki" value="L">
   <label for="laki-laki">Laki-laki</label>
</div>
<button type="submit" class="btn btn-primary mb-2">Daftar</button>
</form>
  

Радиовход, если значение равно null

Радиовход, если значение равно null

Радиовход, если есть значение

Радиовход, если есть значение

Примечания: я использую Laravel 7

Комментарии:

1. Если вы не выберете опцию радио, на сервер ничего не отправляется. В Laravel это нормально; required проверка будет работать для отсутствующих полей.

2. Нет, когда радиовход пуст, сообщение об ошибке не требуется, как я упоминал выше, как я могу получить доступ к @error (‘jenis_kelamin’), пока радиовход отсутствует в объекте запроса, я пробовал.

3. Да, это будет; правило 'jenis_kelamin' => 'required' внутри вашей проверки вызовет ошибку, если поле отсутствует, затем $errors->has('jenis_kelamin') будет true и $errors->first('jenis_kelamin') будет 'The jenis kelamin field is required' . Включите проверку, которую вы используете, в вопрос, и как вы выводите ошибку.

4. @TimLewis прав, если у вас есть «обязательное» правило для jenis_kelamin поля и этот отправленный идентификатор не отправлен, проверка завершится неудачно, и ошибка будет присутствовать в ответе

5. Хм, прошлой ночью я попробовал то, о чем упоминал, но результаты по-прежнему не могли быть получены без четких причин, но теперь отображается требуемое сообщение. Спасибо всем за помощь

Ответ №1:

Вы можете решить эту проблему, поместив скрытый ввод с тем же именем перед радиовходами

 <form action="{{route('mahasiswas.store')}}" method="post">
@csrf
<div class="form-group">
   <label>Jenis Kelamin</label>
   <input type="hidden" name="jenis_kelamin" value="" />
   <input type="radio" name="jenis_kelamin" id="laki-laki" value="L">
   <label for="laki-laki">Laki-laki</label>
</div>
<button type="submit" class="btn btn-primary mb-2">Daftar</button>
</form>
  

Если пользователь проверяет радиовход, он переопределит установленный вами скрытый ввод.

PS: То же самое исправление применяется и для флажков

PPS: Вероятно, исправление, написанное в комментариях, тоже работает, но это работает независимо от используемой платформы

PPPS: это исправление может стать проблемой, если выполняется выбор запроса по атрибуту name, но разработчик должен знать об этом.