为什么我的表单(收音机)默认检查 laravel 集体中的最后一个元素

why my form (radio) checked the last element by default in laravel collective

我不知道为什么我的 单选按钮 默认检查 laravel 集合中的最后一个元素,在我的例子中单选按钮用于 select 性别,每个元素包含代表性别的字母表 'L' 或 'P',在此先感谢,

    <div class="form-group">
      {{-- <label for="jenisKelamin" class="control-label">Jenis Kelamin</label> --}}
        {{Form::label('jenisKelamin','Jenis Kelamin',['class'=>'control-panel'])}}

        <div class="form-check">
            {{-- <label>
            <input type="radio" name="jenisKelamin" id="jenisKelamin" value="L" class="form-control" placeholder="Jenis Kelamin" >Laki-Laki</label> --}}
            {{Form::radio('jenis_kelamin','L',['class'=>'form-check-input'])}}
            <label class="form-check-label">Laki-Laki</label>
        </div>

        <div class="form-check">
            {{Form::radio('jenis_kelamin','P',['class'=>'form-check-input'])}}
            <label class="form-check-label">Perempuan</label> 
        </div>
        </div>
            @if($errors->has('jenis_kelamin'))
        <br>
        <div class="alert alert-danger">{{ $errors->first('jenis_kelamin') }}</div>

        @endif
    </div><br>

我假设您正在使用 laravelcollective/html 包。当我在互联网浏览器中查看原始 HTML 输出时,我看到的是:

<div class="form-group">
  <label for="jenisKelamin" class="control-panel">Jenis Kelamin</label>
  <div class="form-check">
        <input checked="checked" name="jenis_kelamin" type="radio" value="L">
        <label class="form-check-label">Laki-Laki</label>
    </div>
    <div class="form-check">
        <input checked="checked" name="jenis_kelamin" type="radio" value="P">
        <label class="form-check-label">Perempuan</label> 
    </div>
</div>
</div><br>

两个无线电输入都已检查(checked="checked")。由于两者具有相同的名称,这意味着一次只能检查一个,因此只会在屏幕上检查最后一个。

让我们看看 Form::radio 函数的源代码。它可以在您项目的 \vendor\laravelcollective\html\src\FormBuilder.php 中找到,或者在 Github repository 中找到。在这里我们看到函数有这个 header:

public function radio($name, $value = null, $checked = null, $options = [])

看来第三个参数应该是一个布尔值来确定检查状态,以及任何其他选项作为第四个参数。 documentation.

中也显示了这一点

在您的代码片段中,它看起来像这样:

{{Form::radio('jenis_kelamin','L', true, ['class'=>'form-check-input'])}}
{{Form::radio('jenis_kelamin','P', false, ['class'=>'form-check-input'])}}

如果有帮助的话,因为我找了一段时间才找到

{{ Form::radio('jenis_kelamin','L', true, ['class'=>'form-check-input', 'id' => 'id_l']) }}
{{ Form::label('id_l', 'Laki-Laki', ['class' => 'form-check-label']) }}

{{ Form::radio('jenis_kelamin','P', '', ['class'=>'form-check-input', 'id' => 'id_p']) }}
{{ Form::label('id_p', 'Perempuan', ['class' => 'form-check-label']) }}

在 Radio Input 上,在选项数组之前,添加一个空选项 '' 或 'true' 以供默认选择。 在 V 5.7 和 6 上工作