【问题标题】:Laravel 3 Validation of a single input formLaravel 3 验证单个输入表单
【发布时间】:2013-05-02 12:03:08
【问题描述】:

我正在使用壮观的 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;
}
}

我已经用非常复杂的表格成功完成了很多次,但是现在即使我输入了有效的电子邮件,我也会收到一条关于所需字段等的错误消息我错过了什么吗?也许是我尝试仅验证一个字段的事实?我真的不明白为什么会这样。

【问题讨论】:

  • 您是否尝试过调试它以查看它到底在哪里失败了?是在不该通过的时候通过,还是在不该通过的时候失败了?运行验证后尝试转储Validator 对象。
  • 验证错误是需要电子邮件,这意味着我的问题和验证没有通过规则,但我不明白为什么会这样?

标签: php validation laravel laravel-3


【解决方案1】:

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

尝试使用compact 函数生成这样的数组。

array('email' => $email);

你应该这样做。

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

【讨论】:

  • 是的,你是对的。伟大且自证的 Laravel 说 make 方法中的 $attributes 是一个数组。这就是为什么在我完成的所有其他更复杂的表单中,验证都很好,因为我有多个属性通过数组传递。
猜你喜欢
  • 2017-11-09
  • 2017-10-27
  • 2017-01-06
  • 2017-05-02
  • 1970-01-01
  • 2014-06-07
  • 2014-03-06
  • 2016-01-20
  • 1970-01-01
相关资源
最近更新 更多