$ check值是CakePHP验证行为中的完整模型对象

时间:2012-01-12 22:42:19

标签: cakephp cakephp-1.3 validation behavior

我正在尝试在Cake中的几个模型中实现自定义验证行为。我是框架和php的新手,并且可能容易出现愚蠢的错误。

我遇到的问题是我的自定义验证函数的第一个参数正在填充正在验证的模型而不是数组('fieldname'=>'input'),文档似乎说应该在那里。我得到的是:

class Policy extends AppModel {
  var $actsAs = array('JsonValidation');
  var $validate = array(
    'field1' => array(
      'rule' => 'myValidationRule',
      'message' => 'Please enter valid stuff.'
    ),
    'field2' => array(
      'rule' => myValidationRule',
      'message' => 'Please enter valid my.'
    ));
    ....

class MyValidationBehavior extends ModelBehavior {

  function myValidationRule($check, $allowEmpty = false){

    debug($check);  //prints out the Policy model

    $input = array_shift($check);  //errors since $check isn't an array
    debug($input);
    if($allowEmpty && trim($input) == "") return true;
    if(isValid($input)) return false;
    return true;
  }  

关于我做错了什么或者如何在这种情况下获得用户输入的任何想法?

谢谢, 洛伦

工作方案:


  var $validate = array(
      'rules' => array(
        'rule' => array('myValidationRule', true),
        'message' => 'Please enter something valid.'
      ),
      'rule_parms' => array(
        'rule' => array('myValidationRule', true),
        'message' => 'Please enter something valid.'
      ));


  function myValidationRule($Model, $check, $allowEmpty){
    $input = array_shift($check);
    if($allowEmpty && trim($input) == "") return true;
    if(valid($input) == null) return false;
    return true;
  }

1 个答案:

答案 0 :(得分:1)

正如book here所述,行为方法的第一个参数始终是对调用模型的引用。