【发布时间】: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