【问题标题】:How to apply the "matches" validation rule in Kohana 3.1?如何在 Kohana 3.1 中应用“匹配”验证规则?
【发布时间】:2011-09-02 20:59:41
【问题描述】:

我需要知道如何在 Kohana 3.1 中应用“匹配”验证规则。我在我的模型中尝试了以下规则但没有成功:

'password_confirm' => array(
    array('matches', array(':validation', ':field', 'password')),
)

但它总是失败。我在 Valid::matches() 方法的第一行放了一个var_dump($array)。我把它贴在下面:

/**
 * Checks if a field matches the value of another field.
 *
 * @param   array    array of values
 * @param   string   field name
 * @param   string   field name to match
 * @return  boolean
 */
public static function matches($array, $field, $match)
{
    var_dump($array);exit;
    return ($array[$field] === $array[$match]);
}

它打印一个 Validation 类型的对象,如果我这样做 var_dump($array[$field]) 它打印null

非常感谢。

更新:我还从验证消息中发现,规则的参数顺序应该倒过来:

'password_confirm' => array(
    array('matches', array(':validation', 'password', ':field')),
)

【问题讨论】:

    标签: php kohana kohana-3 kohana-orm


    【解决方案1】:

    您的语法是正确的,但我猜测您的数据库架构没有“password_confirm”列,因此您正在尝试向不存在的字段添加规则。

    无论如何,执行密码确认匹配验证的正确位置不在您的模型中,而是在您尝试保存时传递给控制器​​中的模型的额外验证。

    把它放在你的用户控制器中:

    $user = ORM::Factory('user');
    
    // Don't forget security, make sure you sanitize the $_POST data as needed
    $user->values($_POST);
    
    // Validate any other settings submitted
    $extra_validation = Validation::factory(
        array('password' => Arr::get($_POST, 'password'),
              'password_confirm' => Arr::get($_POST, 'password_confirm'))
        );
    
    $extra_validation->rule('password_confirm', 'matches', array(':validation', 'password_confirm', 'password'));
    
    try 
    {
        $user->save($extra_validation);
        // success
    }
    catch (ORM_Validation_Exception $e)
    {               
       $errors = $e->errors('my_error_msgs');
       // failure
    }
    

    另外,请参阅Kohana 3.1 ORM Validation documentation 了解更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多