$ check value - весь объект модели в поведении проверки CakePHP - PullRequest
1 голос
/ 13 января 2012

Я пытаюсь реализовать пользовательское поведение проверки для нескольких моделей в 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;
  }  

Любые идеи о том, что я делаю неправильно или как я могу получить информацию от пользователя в этом контексте?

Спасибо, Лорен

Рабочий раствор:

<code>
  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.'
      ));

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

1 Ответ

1 голос
/ 13 января 2012

Как указано в книге здесь , первый параметр метода поведения всегда является ссылкой на вызывающую модель.

...