#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
Радиовход, если есть значение
Примечания: я использую 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, но разработчик должен знать об этом.