Php Laravel 3单一输入表单的验证

Php Laravel 3单一输入表单的验证,php,validation,laravel,laravel-3,Php,Validation,Laravel,Laravel 3,我正在使用壮观的Laravel框架,但我有一个验证问题,我无法以任何方式试图验证单个电子邮件字段 我的表格输入是: {{ Form::email('email', Input::old('email'), array('id' => 'email', 'class' => 'span4', 'placeholder' => Lang::line('newsletter.email')->get($lang), 'novalidate' => 'novalidate'

我正在使用壮观的Laravel框架,但我有一个验证问题,我无法以任何方式试图验证单个电子邮件字段

我的表格输入是:

{{ Form::email('email', Input::old('email'), array('id' => 'email', 'class' => 'span4', 'placeholder' => Lang::line('newsletter.email')->get($lang), 'novalidate' => 'novalidate')) }}
我的控制器

public function post_newsletter() {

    $email = Input::get('email');

    $v = Newsletter::validator($email, Newsletter::$rules);

    if($v !== true)
    { ... }
    else 
    { ... }
}
还有我的模特

class Newsletter extends Eloquent {

/**
 * Newsletter validation rules
 */
public static $rules = array(
    'email' => 'required|email|unique:newsletters'
);

/**
 * Input validation
 */
public static function validator($attributes, $rules) {
    $v = Validator::make($attributes, $rules);

    return $v->fails() ? $v : true;
}
}

我已经用复杂的表单成功地完成了很多次,但是现在即使我输入了一封有效的电子邮件,我也会收到一条关于我的错误消息,我是否遗漏了什么?也许是因为我只验证了一个字段?我真的不明白为什么会发生这种情况。

我相信这可能是因为您没有传递属性数组(或者基本上是数据数组)

尝试使用该函数生成如下数组

array('email' => $email);
下面是你应该怎么做

$v = Newsletter::validator(compact('email'), Newsletter::$rules);

您是否尝试过调试它,以查看它到底在哪里失败?它是在不应该的时候通过,还是在不应该的时候失败?在运行验证后,尝试转储
验证程序
对象。验证错误是需要电子邮件,这意味着存在我的问题,验证没有通过规则,但我不明白为什么会发生这种情况?是的,你是对的。伟大且自我记录的Laravel说make方法中的$attributes是一个数组。这就是为什么在我所做的所有其他更复杂的表单中,验证都很好,因为我用一个数组传递了多个属性。