validation - 如何对多个字段进行验证?

标签 validation kohana kohana-3 kohana-orm

最近我遇到了这样的情况:

有一个带有三个输入的表单。它们都具有相关的数据库属性(值)。 现在:至少需要其中一个,但可以是其中任何一个

最明智的方法是什么(最好遵循 Kohana 和/或 ORM 的指南)? 我希望这个“规则”存储在模型中,而不是 Controller 中。

到目前为止,我已成功将自定义规则应用于所有三个字段,但这会导致三重错误消息,每个字段一个。

如果需要更多详细信息 - 请告诉我。

最佳答案

我想这就是你所需要的

// File: application/classes/helper/validation.php
class Helper_Validation {

     public static function one_not_empty($array, $keys)
     {
         if( ! is_array($keys))
         {
             // throw new Exception('Helper_Validation::one_not_empty expects an array');
             return FALSE;
         }

         foreach($keys as $key)
         {
             // Change this IF to whatever is the required value
             if(Arr::get($array, $key) !== NULL)
             {
                 return TRUE;
             }
         }

         return FALSE;
      }
 }

现在将其应用到所有字段:

 $keys = array('field1', 'field2', 'field3');

 $validation = Validation::factory($array)
      ->rule('field1', 'Helper_Validation::one_not_empty', array($keys))
      ->rule('field2', 'Helper_Validation::one_not_empty', array($keys))
      ->rule('field3', 'Helper_Validation::one_not_empty', array($keys));

我认为这应该可行,但尚未测试,请告诉我们:)

关于validation - 如何对多个字段进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17840286/

相关文章:

php - Kohana 3分页

apache - 客户端被服务器配置拒绝

view - 如何开始使用 Kostache?

forms - 使用正确的 SSL 证书时不正确的表单验证

php - MVC 项目中应该在哪里进行表单验证?

php - 解析 TWIG 中的变量内容

php - 在 Bootstrap 文件的 Kohana::modules() 中找不到分页模块

validation - JPA 验证 API

java - opensaml 签名加密验证不成功

php - 在使用 Kohana 包装器的 Swift 邮件程序方面需要帮助