【问题标题】:Laravel checkbox checked issueLaravel 复选框检查问题
【发布时间】:2018-05-25 08:22:16
【问题描述】:

我正在使用表单模型绑定,并且我的编辑表单中有一个复选框字段。

       <div class="form-group">
            <div class="form-check">
                {!! Form::checkbox('is_played', 1, $game->is_played === 1 ? true : false, ['id' => 'is-game-played-check', 'class' => 'form-check-input', 'autocomplete' => 'off']) !!}
                <input type="hidden" name="is_played" value="0">
                <label class="form-check-label" for="is-game-played-check">
                    IS played ?
                </label>
            </div>
        </div>

当我进入我的编辑视图时,表单中的所有其他字段都会被填充而没有任何问题,但是在确保条件 $game-&gt;is_played === 1 时不会选中复选框。我还注意到,当我刷新页面复选框时,会检查条件 $game-&gt;is_played === 1 是否得到保证。

我也尝试使用 HTML 代替 Laravel 的表单助手,它再次运行没有任何问题。

<input id="is-game-played-check" class="form-check-input" {{ $game->is_played === 1 ? 'checked' : '' }} name="is_played" type="checkbox"value="1">

这可能是什么问题?

任何帮助将不胜感激。

【问题讨论】:

  • 尝试使用== 而不是===。
  • 当你检查我在 HTML 中使用 === 的问题时,它也有效。我认为问题与此无关。

标签: html forms laravel laravel-5 laravel-5.6


【解决方案1】:

$a === $b 返回 true 如果 $a 等于 $b 并且它们属于同一类型。 在这种情况下,$game-&gt;is_played === 1 返回 false,因为 $game-&gt;is_played 不是 1 的整数类型

所以解决方案是使用==而不是===

【讨论】:

  • 在我问这个问题之前我试过了。结果是一样的。而 is_played 字段是一个整数。
【解决方案2】:

试试这个:

<input id="is-game-played-check" class="form-check-input" {{ ($game->is_played === 1) ? 'checked' : '' }} name="is_played" type="checkbox" value="1">

只需添加()。

【讨论】:

  • 如果您阅读了这个问题,原始 HTML 版本已经可以使用。当我通过 Laravel 的表单助手创建复选框时出现问题。
  • 你真的需要使用 laravel 的表单构建器吗?如果没有,只需使用 html 类型。
  • 如果是这样,请尝试将 Form::checkbox('is_played' 替换为 Form::checkbox(' checked'
猜你喜欢
  • 1970-01-01
  • 2021-05-17
  • 2021-12-18
  • 2011-11-03
  • 1970-01-01
  • 2018-11-12
  • 2011-08-23
  • 1970-01-01
  • 2021-12-16
相关资源
最近更新 更多