【问题标题】:Populating checkboxes in laravel blade在 laravel 刀片中填充复选框
【发布时间】:2019-05-23 01:07:12
【问题描述】:

我正在尝试制作一个可用于 INSERT 和 UPDATE 的部分表单。我被困在填充复选框上。这是我所拥有的:

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

它适用于首次在新记录和更新上加载表单时。问题是当用户在编辑记录时取消选中该框但表单上的其他内容验证失败。当表单在验证失败后加载时,再次选中未选中的框。 $invoice->Paid 中的数据库值已加载,因为 old() 返回 false。

【问题讨论】:

  • 当您使用复选框进行创建和更新时,如果返回的数据来自旧输入或数据库值。为了实现这一点,您可以简单地通过 JS 应用 onclick 事件,并在每次有人选中/取消选中(onchange 事件)时更改隐藏字段的值。您稍后可以根据该隐藏字段的值验证 old 的存在:) 完全是我的意见.. 如果有人知道得更好... 继续... 回答 :)

标签: php laravel laravel-5 blade


【解决方案1】:

你应该可以这样做:

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

只要旧值为真,或者$invoice 模型的Paid 属性不为空/假,那么它将应用检查的值,否则不会。

【讨论】:

    【解决方案2】:

    我尝试了几个小时来完成这项工作。最后我放弃并安装了 LaravelCollective HTML 包:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2015-01-14
        • 2019-04-18
        • 2017-02-13
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-12
        • 1970-01-01
        相关资源
        最近更新 更多