【问题标题】:Form Input Radio Doesn't Go To The Request Object Laravel表单输入单选不会转到请求对象 Laravel
【发布时间】:2021-01-07 15:13:00
【问题描述】:

我有一个包含单选按钮形式的性别输入的表单,但是当我尝试使用空值提交时,单选按钮元素不会进入 Request 对象,该对象在输入名称下方的示例中是jenis_kelamin。但是如果 jenis_kelamin 有值,那么 jenis_kelamin 元素将被输入到请求对象中。

我需要 Request 对象中的元素,因为如果单选元素为空,则所需的输入消息将出错。所以,我希望的是当值为空时无线电输入如何进入 Request 对象以及为什么会发生这种情况。

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>

如果值为空,则无线电输入

如果有值,单选输入

注意:我使用的是 Laravel 7

【问题讨论】:

  • 如果您不选择单选选项,则不会向服务器发送任何内容。在 Laravel 中,这是可以的; required 验证将适用于缺少的字段。
  • 不,当单选输入为空时,将不需要错误消息,正如我上面提到的,当单选输入不在请求对象中时,如何访问@error ('jenis_kelamin') ,我试过了。
  • 是的,它会的;如果字段缺失,验证中的规则'jenis_kelamin' =&gt; 'required' 将触发错误,然后$errors-&gt;has('jenis_kelamin') 将是true$errors-&gt;first('jenis_kelamin') 将是'The jenis kelamin field is required'。包括您在问题中使用的验证,以及您如何输出错误。
  • @TimLewis 是对的,如果您在 jenis_kelamin 字段上有“必填”规则并且未发送该字段 id,它将无法通过验证,并且错误将出现在响应中
  • 嗯,昨晚我尝试了我提到的结果,但结果仍然没有明确的原因,但现在显示了所需的消息。谢谢大家的帮助

标签: javascript php html laravel eloquent


【解决方案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:可能在 cmets 中编写的修复程序也有效,但无论使用何种框架,这个修复程序都有效

PPPS:如果通过 name 属性进行查询选择,此修复可能会出现问题,但开发人员必须意识到这一点。

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 2016-01-20
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2018-09-02
    • 2016-05-16
    • 2016-08-10
    相关资源
    最近更新 更多