gpt4 book ai didi

checkbox - 未选中带有 "Input::old()"的复选框

转载 作者:行者123 更新时间:2023-12-02 07:37:06 25 4
gpt4 key购买 nike

我正在 View 中创建一个复选框:

Form::checkbox('test', 'true', Input::old('test', true));

取消选中该框后,提交表单并重定向回来:

return Redirect::back()->withInput()->withErrors($validation);

该复选框仍处于选中状态 - 可能是因为 "Input::old" 中不存在 'test',因此它会恢复为默认值。

关于如何最好地实现这一目标有什么建议吗?

编辑:

我想出了一种有点古怪的方法来获得我想要的结果:

$isChecked = true; // The default state
// Check if the form has been returned "withInput"
if(Input::old())
{
$isChecked = Input::old('test', false); // If the field has old data available use that, otherwise it is unchecked
}
echo Form::checkbox('test', 'true', $isChecked);

我会将其写入一个函数中以供重用,但这似乎有点痛苦,因此任何评论/建议都会很棒

编辑2如果不清楚,抱歉 - 澄清一下:

  1. 加载表单并选中复选框
  2. 我取消选中复选框并提交表单
  3. 表单未验证,因此我返回表单
  4. 该复选框已重新检查自身 - 我希望根据用户提交的数据取消选中它

我认为发生这种情况是因为如果未选中复选框,则该元素不会包含在发布数据中

最佳答案

我也遇到了同样的问题。事实证明,这是因为我按照有关如何发布未选中的复选框的说明进行操作,其中显示:

echo Form::hidden('name', 0);
echo Form::checkbox('name', 1);

这样做的问题是,在表单验证失败时,如果选中了复选框,Laravel 将使用旧值重新填充“隐藏”和“复选框”字段,因此您的隐藏字段将始终提交 1 而不是 0。 简单解决方案只是为隐藏字段编写 HTML,而不是使用表单助手:

echo '<input type="hidden" name="name" value="0">';
echo Form::checkbox('name', 1);

关于checkbox - 未选中带有 "Input::old()"的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16884032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com