首页 > 解决方案 > 如何在 Laravel 的选择下拉选项中设置默认值

问题描述

我在 Laravel-5.8 中有这段代码

控制器:

public $leave_applicable_genders = [
    "1" => "Both",
    "2" => "Male",
    "3" => "Female",
]; 

public function create()
{
    $leavetype = new HrLeaveType();
    
    return view('leave.leave_types.create')
            ->with('leavetype', $leavetype)
            ->with('leave_applicable_genders', $this->leave_applicable_genders);
}

看法:

     <td width="15%">                    
          <select class="form-control select2bs4" data-placeholder="Select Applicable Gender" tabindex="1" name="leave_applicable_gender[]">
               @foreach($leave_applicable_genders as $k => $leave_applicable_gender)
                   <option value="{{$k}}" @if(old("leave_applicable_gender") == "$k") selected @endif>{{$leave_applicable_gender}}</option>
               @endforeach                                         
           </select>
     </td>     
  1. 如何将选择下拉选项的默认值设置为 1(两者)?

  2. old() 助手不起作用。我该如何纠正这个问题?

谢谢

标签: laravel

解决方案


对于数字 1 - 默认情况下,它将被选中,因为它是leave_applicable_gender数组中的第一个元素。

对于 2 号 - 你可以试试这个

@foreach($leave_applicable_genders as $k => $leave_applicable_gender)
     <option value="{{ $k }}" {{ in_array($k, old("leave_applicable_gender") ?? []) ? 'selected' : ''  }}>{{ $leave_applicable_gender }}</option>
@endforeach

编辑后的答案

为什么需要将此选择输入设为多项选择。用户只需要选择选项,所以我的建议是

<select class="form-control select2bs4" data-placeholder="Select Applicable Gender" tabindex="1" name="leave_applicable_gender">
    @foreach($leave_applicable_genders as $k => $leave_applicable_gender)
        <option value="{{$k}}" {{ old("leave_applicable_gender") == $k ? 'selected' : '' }}>{{$leave_applicable_gender}}</option>
    @endforeach
</select>

此外,第一个选择的选项将是both.


推荐阅读