【问题标题】:How to fix checkbox not returning values in Laravel如何修复复选框在 Laravel 中不返回值
【发布时间】:2019-07-10 17:23:41
【问题描述】:

我正在尝试使 Laravel 中的默认注册表单适应我的数据库自定义用户表;我有一个不返回值的复选框,即使它被选中,它也不会返回值。验证器会在提交后提醒我复选框字段是必需的,即使我选择了它。

这是复选框:

<!--checkbox-->
<div class="form-group row">
    <label for="usertype" class="col-md-4 col-form-label text-md-right">Type Utilisateur</label>
    <div class="col-md-6">
        <input type="checkbox" name="check[]" value="normal"/> Normal
        <input type="checkbox" name="check[]" value="admin"/> Admin
        <input type="checkbox" name="check[]" value="super"/> Super
        @if ($errors->has('usertype'))
            <span class="help-block">
                <strong>{{ $errors->first('usertype') }}</strong>
            </span>
        @endif
    </div>
</div> 

编辑:验证器

protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:6', 'confirmed'],
            'telephone' => ['required', 'numeric'],
            'usertype' => ['required', 'string'],
        ]);
    }

注意:我从验证中删除了用户类型,但注册不会继续,注册页面会刷新,不会出现错误或任何警报

【问题讨论】:

  • 你能把你的验证码贴在这里吗?
  • @1000Nettles 已添加到问题中

标签: php laravel web


【解决方案1】:

在您的 input 元素中,将 name="check[]" 改为 name="usertype[]"

【讨论】:

  • 好的,我这样做了,它说“用户类型必须是字符串。”
  • 我从 usertype 的验证器中删除了 'string' 条件,然后在我验证时重新刷新注册页面。
  • 显示该函数的完整代码。你的问题不仅仅是验证部分。还有为什么你使用字符串作为你的复选框验证的一部分
  • 我对字符串规则的理解是您试图确保要检查的选项仅在普通管理员和用户之间进行?
  • 我很高兴能帮上忙 :)
【解决方案2】:

您当前将复选框的值作为check 提交给 Laravel,而不是 name

name="check[]"

您可以将验证器调整为以下内容:

protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:6', 'confirmed'],
            'telephone' => ['required', 'numeric'],
            'check' => ['accepted'],
        ]);
    }

欲了解更多信息,请查看:https://laravel.com/docs/5.2/validation#rule-accepted。如果您希望它们是必需的,您应该使用accepted 来验证复选框。

在您的控制器操作中完成验证后,请确保您不只是返回验证器。如果出现问题,验证器将抛出异常,因此您可以在验证调用之后放置您想要运行的任何代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2016-06-04
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-08-02
    相关资源
    最近更新 更多