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

时间:2018-06-08 11:30:37

标签: php laravel laravel-5 laravelcollective

我目前正在渲染并填充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() !!}

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

如果我想将类属性添加到表单输入中,如下所示:

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

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

有没有一种方法可以填充值并添加一个类而不显式地这样做:

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

通过上面的操作,它会通过模型{!! Form::model($user, ['action' => 'user@updateUser']) !!}来破坏渲染表单的对象,因为我可能会将$user作为变量解析到模板上,我不想这样做

1 个答案:

答案 0 :(得分:1)

然后,您可以使用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']) !!}