【问题标题】:Laravel - Is there any better approach to check the checkbox with the user previous input value in blade?Laravel - 有没有更好的方法来检查带有刀片中用户先前输入值的复选框?
【发布时间】:2020-11-23 22:53:23
【问题描述】:

我有一个复选框

<input type="checkbox" name="example">

由于验证失败,用户提交表单并返回,所以我想显示复选框的先前状态

<input
    type="checkbox"
    name="example"
    {!! old('example') ? 'value="1" checked' : 'value="0"' !!}>

这里的第一个问题是,现在如何处理验证?如果是01,我会添加布尔验证,但现在第一次是on,之后是01

有人可能会说,如果你最初使用 {!! old('example') ? 'value="1" checked' : 'value="0"' !!},它的值将不再是 on

所以我的第一个问题变成了这样:最初old('example') 的值为空,因此复选框没有选中属性,复选框的值将是0。现在,当用户提交表单时,old('example') 具有值(IT IS NOT NULL),所以这次复选框已选中属性,其值为 1,但它不能。

========

我遇到的另一个问题是,如果old('example') 具有真值(这意味着用户已经选中了复选框),我应该放一些东西来选中复选框。但它还没有完成。我想检查数据库中example 的值,所以如果old('example') 具有错误值(这意味着用户没有选中复选框)我想检查example 的值,如果它的值是1 选中复选框并将复选框的值设置为 1 否则为 0。所以我想到的是:

<input
    type="checkbox"
    name="example"
    value="{!! old('example', isset($collection) ? $collection->example : null) == '1' : '1' : '0' !!}">

现在的问题是 old('example') 将是 on 或什么都没有。 $collection-&gt;example 的值将是 10 或 null。因此,如果我将它与 '1' 进行比较,即使 old('example') 为真,它也不会为真.所以让我们这样做:

@if(old('example') == 'on' || (isset($collection) && $collection->example))
    <input type="checkbox" name="example" value="on" checked="checked">
@else
    <input type="checkbox" name="example">
@endif

通过上面的这段代码,问题得到解决。但是还有其他更好的方法吗?

所以我的问题是如何处理后端的验证,当然还有如何在不涉及 jQuery 之类的情况下以更好的方法处理前端的复选框?

【问题讨论】:

    标签: laravel checkbox


    【解决方案1】:

    我想它会解决你的问题试试看。

    刀片文件:

    <input type="checkbox" name="example" value="{{ old('example') ?? '1' }}"
      {{ old('example') == '1' ? 'checked' : null }} required>
    

    required 会强制用户勾选前端的复选框,而在后端,你可以使用 required 验证,因为我们不能信任前端验证。

    控制器:

    public function store(Request $request)
    {
        $request->validate([
            'example' => 'required',
        ]);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-12
      • 2011-05-05
      • 2020-08-13
      • 1970-01-01
      • 2019-05-07
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多