我正在使用LaravelCollective构建一个表单,我正在从Form Model Binding中获益,使用它来创建或编辑模型。
我有这个字段:
{{ Form::text('price', null, ['class' => 'form-control']) }}
如果我用Form :: model()打开表单,它会显示模型值。问题是我需要它的默认值为0。
我用这种方式实现了它,但我正在寻找一种更优雅的方式
{{ Form::text('price', isset($product)? $product->price : 0, ['class' => 'form-control']) }}
如果我这样做:
{{ Form::text('price', 0, ['class' => 'form-control']) }}
即使我正在编辑模型,它也始终将值覆盖为0。
答案 0 :(得分:1)
您可以尝试Laravel表单模型绑定。参考Link
路线:
Route::get('/user/edit/{id}', [
'as' => 'updateUser',
'uses' => 'UserController@getUserEditFrom'
]);
控制器:
public function getUserEditFrom($id, UserRepository $userRepository)
{
return view('users.edit', [
'user' => $userRepository->find($id)
]);
}
查看
{!! Form::model($user, ['url' => route('updateUser', ['id' => $user->id])]) !!}
<div class="form-group {{ $errors->first('name', 'has-error') }}">
{!! Form::label('name', 'Name *') !!}
{!! Form::text('name', null, ['class' => 'form-control']) !!}
{!! $errors->first('name', '<span class="help-block">:message</span>') !!}
</div>
<div class="form-group {{ $errors->first('username', 'has-error') }}">
{!! Form::label('username', 'Username *') !!}
{!! Form::text('username', null, ['class' => 'form-control']) !!}
{!! $errors->first('username', '<span class="help-block">:message</span>') !!}
</div>
<div class="form-group {{ $errors->first('email', 'has-error') }}">
{!! Form::label('email', 'Email *') !!}
{!! Form::text('email', null, ['class' => 'form-control']) !!}
{!! $errors->first('email', '<span class="help-block">:message</span>') !!}
</div>
{!! Form::close() !!}
答案 1 :(得分:0)
您可以将第二个参数更改为$ product-&gt; price || 0
或:
似乎你的产品型号的价格attr可以为空。虽然这不能直接回答你的问题,但我建议你为每个可能的列设置一个默认值,所以这些问题等等都不会妨碍你。你可以简单地将price列的默认值设置为零,或者为model :: creation添加一个事件监听器,检查空值并将它们更改为0.
答案 2 :(得分:0)
您也可以通过这种方式实现{{ Form::text('price', @$product->price ? :0, ['class' => 'form-control']) }}