/**
  * 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]);
 }
示例#2
0
 public function testCustomLabels()
 {
     $messages = array('name' => array('Name is required'), 'email' => array('Email should be a valid email address'));
     $v = new Validator(array('name' => '', 'email' => '$'));
     $v->rule('required', 'name')->message('{field} is required');
     $v->rule('email', 'email')->message('{field} should be a valid email address');
     $v->labels(array('name' => 'Name', 'email' => 'Email'));
     $v->validate();
     $errors = $v->errors();
     $this->assertEquals($messages, $errors);
 }
示例#3
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];
 }
示例#4
0
 /**
  * 検出したエラーのメッセージを取得します。
  * @param string $fieldName     (optional) フィールド名
  * @return string|bool
  */
 public function getErrors($fieldName = null)
 {
     return $this->validator->errors($fieldName);
 }
示例#5
0
 public function testDefaultLangDirShouldBePackageLangDir()
 {
     $validator = new Validator(array());
     $this->assertEquals(realpath($this->getLangDir()), realpath(Validator::langDir()));
 }
示例#6
0
 public function testInstanceOfWithAlternativeSyntaxInvalid()
 {
     $v = new Validator(array('attributeName' => new stdClass()));
     $v->rules(array('instanceOf' => array(array('attributeName', 'SomeOtherClassInAlternativeSyntaxInvalid'))));
     $v->validate();
     $this->assertFalse($v->validate());
 }