/** * 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]); }
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); }
/** * オリジナルの検証ルールを追加します。 * @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]; }
/** * 検出したエラーのメッセージを取得します。 * @param string $fieldName (optional) フィールド名 * @return string|bool */ public function getErrors($fieldName = null) { return $this->validator->errors($fieldName); }
public function testDefaultLangDirShouldBePackageLangDir() { $validator = new Validator(array()); $this->assertEquals(realpath($this->getLangDir()), realpath(Validator::langDir())); }
public function testInstanceOfWithAlternativeSyntaxInvalid() { $v = new Validator(array('attributeName' => new stdClass())); $v->rules(array('instanceOf' => array(array('attributeName', 'SomeOtherClassInAlternativeSyntaxInvalid')))); $v->validate(); $this->assertFalse($v->validate()); }