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:
- Session Flash Data (Old Input)
- Explicitly Passed Value
- Model Attribute Data
请注意,显式传递的值似乎不是默认回退值,而是提供时将使用的实际值(无论型号如何)。因此,这似乎是预期的行为。
更新:正如评论中所讨论的,在没有模型集的情况下允许回退值的解决方案是使用:
{{ Form::checkbox('active', 'Yes', isset($client)?null:true) }}
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:
- Session Flash Data (Old Input)
- Explicitly Passed Value
- Model Attribute Data
请注意,显式传递的值似乎不是默认回退值,而是提供时将使用的实际值(无论型号如何)。因此,这似乎是预期的行为。
更新:正如评论中所讨论的,在没有模型集的情况下允许回退值的解决方案是使用:
{{ Form::checkbox('active', 'Yes', isset($client)?null:true) }}