如何在多个领域的laravel中进行复杂验证?

时间:2014-03-06 15:40:04

标签: forms laravel

我有一张表格要求您输入地址。请求的字段是:

  1. 街道地址
  2. 郊区
  3. 邮政编码
  4. 这些领域的个人验证很容易。您可以简单地使用“required”和“min”等来确保它已填写。但我需要第三个验证选项来执行以下操作:

    1. 构建一个由这三个参数组成的字符串
    2. 将这些字段传递给名为“addressValidator”
    3. 的服务
    4. 确认地址是否“整体有效”
    5. 将错误消息仅置于其中一个字段(街道地址)下(如果它们都失败)
    6. 您如何在表单上创建这样的验证器?

1 个答案:

答案 0 :(得分:0)

只需扩展验证器

编辑:和你的消息包方法

private $moreMessages = array();

public function postStore()
{
    ...
    ...
    if($validator->passes())
    {
         ...
         ...
         // pass data to the other validator...
         if($this->extendedValidator($data))
         {
           /// yaay!! i can store now!
         }
         else
         {
             return Redirect::to('')->with('messages',$this->moreMessages);
         }
    }
}

private function extendedValidator($data = array())
{
   $passed = true;
   // if validator address fails
       // $passed = false;
       // $this->moreMessages['address'] = 'blabla';

   // if validator birthday fails
       // $passed = false;
       // $this->moreMessages['birthday'] = 'blabla';

   return $passed;
}