Laravel选择 - 从表格

时间:2018-04-29 04:27:13

标签: laravel laravel-5.4 laravel-5.5 laravel-5.6 laravelcollective

我正在尝试从编辑表单上的表单中检索旧值,但似乎无法找到答案,因为世界上的每个人都决定使用Form :: select from laravelcollective / html library。我正在尝试使用常规HTML来处理此问题,并且无法从表单中检索旧值。

这是我的HTML代码。

                        <div class="col-xs-12 form-group">
                            <label class="control-label">Role*</label>
                            <select name="roles[]" data-placeholder="Choose a Role for this User..." class="chosen-select" multiple tabindex="4">
                                <option value="">Select</option>
                                @foreach ($roles as $key => $value)
                                    <option value="{{ $key }}" {{ in_array($key, old("roles")) ? "selected":"") }} >{{ $value }}</option>
                                @endforeach
                            </select>
                        </div>

这是我的控制器代码。

public function edit($id)
{
    $roles = Role::get()->pluck('name', 'id');
    $user = User::findOrFail($id);
    return view('admin.users.edit', compact('user', 'roles'));
}

我正在尝试将以下内容转换为常规html

<div class="row">
            <div class="col-xs-12 form-group">
                {!! Form::label('role', trans('global.users.fields.role').'*', ['class' => 'control-label']) !!}
                {!! Form::select('role[]', $roles, old('role') ? old('role') : $user->role->pluck('id')->toArray(), ['class' => 'form-control select2', 'multiple' => 'multiple', 'required' => '']) !!}
                <p class="help-block"></p>
                @if($errors->has('role'))
                    <p class="help-block">
                        {{ $errors->first('role') }}
                    </p>
                @endif
            </div>
        </div>

1 个答案:

答案 0 :(得分:0)

试试这个:

<div class="col-xs-12 form-group {{ $errors->has('role') ? 'has-error' : '' }}">
  <label for="role" class="control-label">Role *</label>

  <select class="form-control select2" name="role[]" id="role" required multiple>
    @foreach ($roles as $id => $label)
      <option value="{{ $id }}" @if (collect(old('role', $user->role->pluck('id') ?? []))->contains($id)) selected="selected" @endif>{{ $label }}</option>
    @endforeach
  </select>

  <span class="help-block">
  @if ($errors->has('role'))
    {{ $errors->first('role') }}
  @endif
  </span>
</div>

在控制器的更新/存储功能中,请确保使用内置验证方法,该方法将填充会话中的任何错误。

如果您有其他检查,请确保在重定向时返回输入。

return redirect()->back()
    ->withInput() // <- return input with redirect, will populate session
    ->with('error', 'Persist failed'); // <- optional