【问题标题】:Select default value if no old input is set如果没有设置旧输入,则选择默认值
【发布时间】:2016-01-07 15:17:17
【问题描述】:

我正在使用表单模型绑定并有以下选择输入:

{!! Form::select('user_id', $users, old('user_id') ?: Auth::id(), ['class' => 'form-control select2 users']) !!}

我想完成以下工作:

  • 在创建表单中:选择 user_id 等于经过身份验证的用户 ID 的选项,但如果会话中有旧输入,请选择该选项。
  • 在编辑表单中:始终选择存储在模型中的选项。

old('user_id') ?: Auth::id() 在编辑时似乎不起作用,因为它总是选择经过身份验证的用户的选项,而不是模型中存储的选项。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    相信你已经有了这条线,

      {!! Form::Model($users, ['route' => ['admin.user.update', $user->id], 'method' => 'PUT']) !!}
    

    那么你的代码应该是这样的:

    {!! Form::select('user_id', $users, isset($selectedUser) ? $selectedUser : null) !!}
    

    在 Create 函数中,不要传递 $selectedUser 来查看,而是传递会话中的 id,在编辑函数中,你应该传递 $selectedUser 来查看,即 Auth::user()->id

    【讨论】:

    • 我曾希望有一种方法可以避免在我的控制器中定义选定的用户,因为我需要在大约 6 个控制器中使用它。我讨厌重复的代码。
    • @EsTeGe,因为我认为它总是有一个会话 user_id,这是另一个 id,你可以尝试判断你当前的路线,如果是编辑使用给它一个空值。 \@if (Route::currentRouteName() === 'admin.user.update') 做一个逻辑 \@endif
    猜你喜欢
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多