我的模型上有以下mutator:
/**
* @param $value
*/
public function setBreadcrumbAttribute($value)
{
$fix = is_null($value) ? 0 : (integer) $value;
$this->attributes['breadcrumb'] = $fix;
}
以下是我的html:
{!! Form::checkbox('breadcrumb', 1, null, [
'id' => 'breadcrumb'
]) !!}
这是在我的控制器中:
$page->update($request->only('title', 'body', 'breadcrumb'));
breadcrumb属性更新大约是保存表单的6/10次。其余的,它似乎是设置正确的属性$this->attributes['breadcrumb']
但由于某种原因没有保存到数据库。
这让我发疯了。
P.S。我is_null
检查的原因是,如果我取消选中该复选框,则会向请求返回null
。
P.P.S。 breadcrumb
属性在数据库中保存为boolean (tinyint)
。
答案 0 :(得分:0)
如果未选中复选框,则根本不会通过复选框。因此,当未选中时它不在输入中。您应该在填写模型之前检查这一点,或者在表单中添加默认值。
您可以添加隐藏字段,其值为0,并且与html中的复选框前面的复选框名称相同。输入按顺序传递,因此在检查时它将覆盖隐藏的输入。如果未选中,隐藏的那个将是您最终使用的那个。因此,无论哪种方式,您都会在请求输入中得到一个值。