/**
  * Fix bug where rules messages added with Validator::addRule were replaced after creating validator instance
  */
 public function testRuleMessagesReplacedAfterConstructor()
 {
     $customMessage = 'custom message';
     $ruleName = 'customRule';
     $fieldName = 'fieldName';
     Validator::addRule($ruleName, function () {
     }, $customMessage);
     $v = new Validator(array($fieldName => $fieldName));
     $v->rule($ruleName, $fieldName);
     $v->validate();
     $messages = $v->errors();
     $this->assertArrayHasKey($fieldName, $messages);
     $this->assertEquals(ucfirst("{$fieldName} {$customMessage}"), $messages[$fieldName][0]);
 }
Example #2
0
 /**
  * オリジナルの検証ルールを追加します。
  * @param string        $ruleName       検証ルール名
  * @param callable      $validator      検証を行う関数<br>
  *  検証時に`($value, $fieldName, $options)`が渡されます。
  * @param callable      $jsGenerator    クライアントサイドの検証を行うJavaScriptコードを返す関数<br>
  *  コード生成時に`($value, $fieldName, $params)`が渡され、<br>
  *  生成されたコードは `function (value, fieldName) {` と ` }` でラップされて出力されます。
  */
 public static function addRule($ruleName, callable $validator, callable $jsGenerator = null)
 {
     Valitron::addRule($ruleName, $validator);
     static::$customRules[$ruleName] = ['validator' => $validator, 'jsGenerator' => $jsGenerator];
 }
Example #3
0
 public function testAddRuleCallbackArrayWithArrayAsExtraParameterAndCustomMessageLabel()
 {
     $v = new Validator(array('name' => 'Chester Tester'));
     $v->labels(array('name' => 'Name'));
     $v->addRule('testRule', array($this, 'sampleObjectCallbackFalse'));
     $v->rule('testRule', 'name', array('foo', 'bar'))->message('Invalid name selected.');
     $this->assertFalse($v->validate());
 }