【问题标题】:Having trouble getting fields to validate with Laravel / Ardent无法使用 Laravel / Ardent 验证字段
【发布时间】:2014-08-30 22:51:18
【问题描述】:

我是 Laravel 的新手,正在尝试弄清楚如何验证用户输入。

我有一个包含多个文本字段、一个文本区域和一个复选框的表单:

      {{ Form::text('firstname', '', ['placeholder' => 'First Name', 'class' => 'form-control']) }}
      {{ Form::text('lastname', '', ['placeholder' => 'Last Name', 'class' => 'form-control']) }}
      {{ Form::email('email', '', ['placeholder' => 'Email', 'class' => 'form-control']) }}
      {{ Form::textarea('question', '', ['placeholder' => 'Question', 'class' => 'form-control']) }}
      {{ Form::checkbox('terms_and_conditions', 'yes') }}
      {{ Form::label('terms_and_conditions', 'I agree to terms and conditions') }}

验证规则是:

  public static $rules = array(
    'firstname' => 'required|between:2,20',
    'lastname' => 'required|between: 2,30',
    'email' => 'required|email',
    'question' => 'required|max: 5000',
    'terms_and_conditions' => 'required|accepted',
  );

文本字段都按预期进行验证,但我无法验证复选框字段。我将 $input 的 json 回显到视图中,并且可以验证模型正在接收 terms_and_conditions 复选框值,所以我不明白为什么它不会验证?

如果我添加任何新字段或更改字段名称,这些字段也不会生效。

我错过了什么吗?

【问题讨论】:

  • 您需要将必需和接受作为规则吗?如果接受是一个规则,那么这不是完成工作吗?
  • 还会生成以下错误消息。 “必须接受条款和条件。”这是返回到视图的 $input: {"firstname":"Test","lastname":"User","email":"test@user.com"} (为了清楚起见,我取出了 _token 位)
  • @MitchGlenn,我不这么认为,我已经尝试过,无论是否需要。我认为接受就是所需要的。我真的很困惑,因为如果我现在添加任何新的字段和规则,它们都会遇到同样的不验证问题。
  • 尝试用 1 替换是,{{ Form::checkbox('terms_and_conditions', 1) }}
  • 我试过使用 1、'yes' 和 'on',都没有用。我认为这不是复选框本身的问题,因为我已经完全用单选按钮替换了该字段,而其他输入只是为了测试并且它们都不会验证,只有在添加之前具有名称的字段复选框字段将生效。

标签: validation laravel-4 ardent


【解决方案1】:

我刚刚意识到我的模型中有一个明显的新手错误。我忽略了将 terms_and_conditions 添加为可填充字段。表单现在可以正确验证,但这引出了另一个问题,是否可以将该字段从添加到数据库中排除?我宁愿在数据库中没有该列,但没有它 Laravel 会抛出异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2017-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    相关资源
    最近更新 更多