Laravel 编辑表单,获取下拉列表的值

Laravel editing a form, getting value for dropdown lists

我让用户提交了一个表单,其中一些字段是这样的下拉列表

                <div class="form-group row">
                  <label for="type" class="col-md-3 col-form-label text-md-right">Type</label>
                    <div class="col-md-9">
                      <select class ="form-control" id="type" name="type">
                        <option>Apartment</option>
                        <option>House</option>
                        <option>Studio</option>
                        <option>Flat</option>
                      </select>
                      @if ($errors->has('type'))
                          <span class="invalid-feedback">
                              <strong>{{ $errors->first('type') }}</strong>
                          </span>
                      @endif
                    </div>
                </div>

效果很好。

我不想让用户编辑特定的表单。我可以通过为输入分配一个值并像这样调用数据来获得标题和照片等其他部分

<input id="Address" type="text" class="form-control" name="address" value="{{$Advert->address }}" required autofocus>

但是当我尝试对 select 选项做类似的事情时,什么也没有出现。这是编辑页面上的下拉菜单。

<div class="form-group row">
                          <label for="type" class="col-md-3 col-form-label text-md-right">Type</label>
                            <div class="col-md-9">
                              <select class ="form-control" id="type" name="type" value="{{$Advert->type}}">
                                <option></option>
                                <option>Apartment</option>
                                <option>House</option>
                                <option>Studio</option>
                                <option>Flat</option>
                              </select>
                              @if ($errors->has('type'))
                                  <span class="invalid-feedback">
                                      <strong>{{ $errors->first('type') }}</strong>
                                  </span>
                              @endif
                            </div>
                        </div>

您需要在 option 元素上使用 selected 属性,而不是直接将值分配给 select:

<select class ="form-control" id="type" name="type">
      <option value="">Select</option>
      <option {{ $Advert->type == 'Apartment' ? 'selected':'' }}>Apartment</option>
      <option {{ $Advert->type == 'House' ? 'selected':'' }}>House</option>
      <option {{ $Advert->type == 'Studio' ? 'selected':'' }}>Studio</option>
      <option {{ $Advert->type == 'Flat' ? 'selected':'' }}>Flat</option>
 </select>

但我建议您使用 Laravel Collective Forms 来更好地处理表单及其元素

就像之前建议的那样,我会使用 Laravel 集体表格;像这样:

{!! Form::select('type',$selectOptions,null,['id' =>'type','class' => 'form-control'])!!}

变量 $selectOptions 将包含所有选项:

$selectOptions = [
    '' => 'Select',
    'Apartment' => 'Apartment',
    'House' => 'House',
    'Studio' => 'Studio',
    'Flat' => 'Flat'
];

这很容易做到。当然,一切都应该在表格内。

{!! Form::open() !!}} or {!! Form::model($model) !!}

希望对您有所帮助。