【问题标题】:Kohana Validation Rule (This Rule OR That Rule)Kohana 验证规则(此规则或该规则)
【发布时间】:2012-02-11 18:00:19
【问题描述】:

我正在尝试以这种方式使用 Kohana 验证工厂:

$post = validation::factory($_POST)     
->rule('payorid', 'not_empty')
->rule('payortype', 'not_empty')

->rule('individual_first_name','not_empty')
->rule('individual_last_name','not_empty')
OR
->rule('orgname','not_empty');

关于最后三个规则,我希望前两个是正确的,或者最后一个是正确的。

因此,如果用户提供了名字和姓氏,则可以,或者如果用户只提供组织名,则可以。

我可以用这样一个长怪物的 if 语句来做到这一点:

if((!isset($_POST['individual_first_name'])&&!isset($_POST['individual_last_name']))||(!isset($_POST['orgname'])))
{
exit("A name is empty");
}

但如果可以的话,我想避免这种情况。

【问题讨论】:

    标签: validation kohana


    【解决方案1】:

    至少有两种方法可以解决这个问题:

    1. 编写您自己的验证回调。请查看docs
    2. 只附加您需要的规则,例如
    $post = validation::factory($_POST)     
        ->rule('payorid', 'not_empty')
        ->rule('payortype', 'not_empty');
    
    if ( ! empty($this->request->post('orgname')))
    {
        $post->rule('orgname','not_empty');
    }
    else
    {
        $post->rule('individual_first_name','not_empty')
             ->rule('individual_last_name','not_empty');
    }

    不过,我建议回调。

    【讨论】:

      【解决方案2】:

      这是@Thornsten 方法的不同版本,验证名字和姓氏,然后验证组织名称。 (例如,如果您想添加其他验证规则。)

      $org_validate = Validation::factory($_POST)
        ->rule('orgname','not_empty');
      
      $name_validate = Validation::factory($_POST)
        ->rule('individual_first_name','not_empty')
        ->rule('individual_last_name','not_empty');
      
      $post = Validation::factory($_POST)
        ->rule('payorid', 'not_empty')
        ->rule('payortype', 'not_empty');
      
      $errors = array();
      
      if (!$post->check())
      {
        $errors = $errors + $post->errors();
      }
      
      if (!$name_validate->check() AND !$org_validate->check())
      {
        $errors = $errors + $name_validate->errors() + $org_validate->errors();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-08
        • 2013-06-03
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多