在 Laravel 中添加额外属性(class)后,从 "Form::model" 自动填充 "Form::text"

Auto populate "Form::text" from "Form::model" after adding extra attribute(class) in Laravel

我目前正在 laravel using the laravelcollective plugin 中呈现和填充表单。这按预期工作:

{!! Form::model($user, ['action' => 'user@updateUser']) !!}

<div class="form-group">
    {!! Form::label('user_name', 'Name') !!}
    {!! Form::text('user_name') !!}
</div>

<button class="btn btn-success" type="submit">Update</button>

{!! Form::close() !!}

以上代码生成表单并使用用户名填充输入字段。

如果我想像这样向表单输入添加 class 属性:

{!! Form::text('user_name', '', ['class' => 'form-control']) !!}

它不会填充输入值,因为理论上我已将默认值(第二个参数)设置为 ''

有没有一种方法可以填充值并添加 class 而无需像这样明确地这样做:

{!! Form::text('user_name', $user->user_name, ['class' => 'form-control']) !!}

通过执行上述操作,它破坏了通过模型 {!! Form::model($user, ['action' => 'user@updateUser']) !!} 呈现表单的对象,因为我也可以将 $user 作为变量解析到模板上,这是我不想要的要做。

那你可以用null代替""空白

{!! Form::text('user_name', null , ['class' => 'form-control']) !!}

你也可以使用old函数

{!! Form::text('user_name', $user->user_name or old('user_name'), ['class' => 'form-control']) !!}

这个$user->user_name or old('user_name')可以表示为

如果 $user->user_name 存在,则输入 $user->user_name 的值,否则检查 old input 第一次是 "" 空白,如果你重定向回来,则有一些值错误来了。

或简单地使用isset方法或在php 7中使用$user->user_name ?? ''

{!! Form::text('user_name', $user->user_name ?? '', ['class' => 'form-control']) !!}