Laravel Formbuilder Modelbinding

时间:2016-02-03 22:33:21

标签: php laravel formbuilder

我正在使用以下代码。尝试利用?>Laravel的模型绑定效果。

FormBuilder

这是很好的股票代码,取自旧文档,它可以很好地按预期更新信息,但我无法获得模型绑定来填充{{1}的值} first_name 。奇怪的是,如果我用股票html代码创建它,就像这样:

{!! Form::model($contact,['method' => 'PUT', 'url' => URL::route('contact.put', $contact),'accept-charset' => 'UTF-8', 'enctype' => 'multipart/form-data']) !!}

<div class="form-group">
    {!! Form::label('','First Name') !!}
    {!! Form::text('first_name','', ['class' => 'form-control','required' => 'required']) !!}
</div>

...

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

它会很好地填写价值,所以缺少什么?

1 个答案:

答案 0 :(得分:1)

这是因为你传入一个空字符串。除非您有要设置的预定义值,否则应传递如下的空值:

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

为什么会这样?

这是填充输入值的代码部分:

public function getValueAttribute($name, $value = null)
{
    if (is_null($name)) {
        return $value;
    }
    if (! is_null($this->old($name))) {
        return $this->old($name);
    }
    if (! is_null($value)) {
        return $value;
    }
    if (isset($this->model)) {
        return $this->getModelValueAttribute($name);
    }
}

你应该关注的是第3个if语句。您传入的空字符串不是空值,因此它假定您知道要传递的内容为默认值。

但是,如果传入一个空值,它会跳过第3个if语句并转到第4个if语句,该语句从模型中检索值。