1

我正在使用 LaravelCollective 构建一个表单,并且我正在利用表单模型绑定的好处来使用它来创建或编辑模型。

我有这个领域:

{{ 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。

4

3 回答 3

1

您可以尝试 Laravel 表单模型绑定。参考链接

路线:

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() !!}
于 2016-08-25T19:31:29.577 回答
0

您可以将第二个参数更改为 $product->price || 0

或者:

看来您的产品模型的价格属性可以为空。尽管这不能直接回答您的问题,但我建议您为每个可能的列设置一个默认值,这样就不会妨碍此类问题以及更多问题。您可以简单地将 price 列的默认值设置为零,或者为 model::creating 添加事件侦听器,检查空值并将其更改为 0。

于 2016-08-25T19:30:35.537 回答
0

您也可以通过这种方式实现{{ Form::text('price', @$product->price ? :0, ['class' => 'form-control']) }}

于 2016-08-25T19:52:10.090 回答