Laravelcollective 中的表单模型绑定,默认选中的复选框永远不会显示为未选中

Form model binding in Laravelcollective, a default checked checkbox never shows unchecked

Laravel 5.5, Laravelcollective 5.4

在我的编辑页面上,无论数据库中的状态如何,复选框始终显示为已选中。 (已确认它在没有默认检查的情况下按预期工作。)

我为我的创建路线使用相同的表单字段,并希望选中默认值。

 {{ Form::model($client, ['route' => ['clients.update', $client->id], 'method' => 'patch']) }}
 {{ Form::checkbox('active', 'Yes', true) }}
 {{ Form::close() }}

根据documentation on form model binding

So, the priority looks like this:

  1. Session Flash Data (Old Input)
  2. Explicitly Passed Value
  3. Model Attribute Data

请注意,显式传递的值似乎不是默认回退值,而是提供时将使用的实际值(无论型号如何)。因此,这似乎是预期的行为。

更新:正如评论中所讨论的,在没有模型集的情况下允许回退值的解决方案是使用:

{{ Form::checkbox('active', 'Yes', isset($client)?null:true) }}