在 laravel blade 中填充复选框

Populating checkboxes in laravel blade

我正在尝试制作一个可重复用于 INSERT 和 UPDATE 的部分表单。我坚持填充复选框。这是我的:

<input type="checkbox" id="Paid" value="1" name="Paid" 
{{ (old('Paid') ?? $invoice->Paid ?? false) ? 'checked' : '' }} />

它适用于第一次加载新记录和更新表单时。问题是当用户在编辑记录时取消选中该框但表单上的其他内容无法通过验证。当验证失败后加载表单时,将再次选中未选中的框。来自 $invoice->Paid 的数据库值被加载,因为 old() returns false.

您应该可以这样做:

{{ old('Paid', $invoice->Paid) ? 'checked="checked"' : '' }}

只要旧值是真值,或者$invoice模型的Paid属性不是null/false,那么它就会应用选中的值,否则不会。

我试了几个小时才让它工作。最后我放弃了,安装了 LaravelCollective HTML package:

https://laravelcollective.com/docs/5.3/html

此包中的表单模型绑定适用于在上述场景中填充复选框。

一种方法是测试old('_token')的值:

@if (!(old('_token') && $invoice->Paid) || (old('Paid')))
checked
@endif