Laravel Formbuilder 模型绑定
Laravel Formbuilder Modelbinding
我正在使用以下代码。尝试利用 Laravel
和 FormBuilder
.
的模型绑定效果
{!! 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() !!}
这是非常常用的代码,取自较早的文档,能够按预期更新信息,但我无法获取模型绑定来填充 Text Input Field
first_name。奇怪的是,如果我在库存 html 代码中创建它,就像这样:
<input type="text" class="form-control" name="first_name" id="first_name" value="{{$contact->first_name}}" required="required">
会填好这个值,还缺什么?
这是因为您传入的是空字符串。除非你有一个你想要设置的预定义值,否则你应该像这样传递一个空值:
{!! 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);
}
}
你应该关注的是第三个if语句。您传递的是一个空字符串,它不是空值,因此它假定您知道要传递什么作为默认值。
但是,如果您传入空值,它会跳过第 3 个 if 语句并移至第 4 个 if 语句,该语句从模型中检索值。
我正在使用以下代码。尝试利用 Laravel
和 FormBuilder
.
{!! 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() !!}
这是非常常用的代码,取自较早的文档,能够按预期更新信息,但我无法获取模型绑定来填充 Text Input Field
first_name。奇怪的是,如果我在库存 html 代码中创建它,就像这样:
<input type="text" class="form-control" name="first_name" id="first_name" value="{{$contact->first_name}}" required="required">
会填好这个值,还缺什么?
这是因为您传入的是空字符串。除非你有一个你想要设置的预定义值,否则你应该像这样传递一个空值:
{!! 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);
}
}
你应该关注的是第三个if语句。您传递的是一个空字符串,它不是空值,因此它假定您知道要传递什么作为默认值。
但是,如果您传入空值,它会跳过第 3 个 if 语句并移至第 4 个 if 语句,该语句从模型中检索值。