public function validationDefault(Validator $validator) { $data = null; // Contain our first $context validator $validator->requirePresence('label')->notEmpty('label', __("Ce champs est obligatoire"), function ($context) use(&$data) { $data = $context; // Update the $data with current $context return true; })->requirePresence('type_id')->notEmpty('type_id', __("Ce champs est obligatoire")); // @ TODO : TYPE_ID => 1, doit être unique (seulement une homepage par site !) $translationValidator = new Validator(); $translationValidator->requirePresence('title')->notEmpty('title', __("Ce champs est obligatoire"))->requirePresence('slug')->notEmpty('slug', __("Ce champs est obligatoire")); $validator->addNestedMany('translations', $translationValidator); return $validator; }
/** * Tests that the 'create' and 'update' modes are preserved when using * nested validators * * @return void */ public function testNestedManyValidatorCreate() { $validator = new Validator(); $inner = new Validator(); $inner->add('username', 'email', ['rule' => 'email', 'on' => 'create']); $validator->addNestedMany('user', $inner); $this->assertNotEmpty($validator->errors(['user' => [['username' => 'example']]], true)); $this->assertEmpty($validator->errors(['user' => [['username' => 'a']]], false)); }
/** * Test nested fields with many, but invalid data. * * @return void */ public function testErrorsWithNestedManySomeInvalid() { $validator = new Validator(); $comments = new Validator(); $comments->add('comment', 'letter', ['rule' => 'alphanumeric']); $validator->addNestedMany('comments', $comments); $data = ['comments' => ['a string', ['comment' => 'letters'], ['comment' => 'more invalid']]]; $errors = $validator->errors($data); $expected = ['comments' => ['_nested' => 'The provided value is invalid']]; $this->assertEquals($expected, $errors); }