/**
  * This function performs the validation work for complex object models.
  *
  * In addition to checking the current object, all related objects will
  * also be validated.  If all pass then <code>true</code> is returned; otherwise
  * an aggreagated array of ValidationFailed objects will be returned.
  *
  * @param      array $columns Array of column names to validate.
  * @return     mixed <code>true</code> if all validations pass; array of <code>ValidationFailed</code> objets otherwise.
  */
 protected function doValidate($columns = null)
 {
     if (!$this->alreadyInValidation) {
         $this->alreadyInValidation = true;
         $retval = null;
         $failureMap = array();
         // We call the validate method on the following object(s) if they
         // were passed to this object by their coresponding set
         // method.  This object relates to these object(s) by a
         // foreign key reference.
         if ($this->aAuthor !== null) {
             if (!$this->aAuthor->validate($columns)) {
                 $failureMap = array_merge($failureMap, $this->aAuthor->getValidationFailures());
             }
         }
         if ($this->aArticle !== null) {
             if (!$this->aArticle->validate($columns)) {
                 $failureMap = array_merge($failureMap, $this->aArticle->getValidationFailures());
             }
         }
         if (($retval = AuthorArticlePeer::doValidate($this, $columns)) !== true) {
             $failureMap = array_merge($failureMap, $retval);
         }
         $this->alreadyInValidation = false;
     }
     return !empty($failureMap) ? $failureMap : true;
 }
 public function putUpdate()
 {
     $id = Input::get('id');
     $validation = Author::validate(Input::all());
     if ($validation->fails()) {
         return Redirect::route('edit_author', $id)->withErrors($validation)->withInput();
     } else {
         Author::find($id)->update(array('name' => Input::get('name'), 'bio' => Input::get('bio')));
         return Redirect::route('author', $id)->with('message', 'Author was updated successfuly.');
     }
 }
Example #3
0
 public function testDoValidate_BasicValidatorObj()
 {
     $author = new Author();
     $author->setFirstName("Malcolm");
     // last name required, valid email format, age > 0
     $author->setLastName("X");
     $author->setEmail('malcolm@');
     // fail
     $res = $author->validate();
     $this->assertFalse($res, "Expected validation to fail.");
     $failures = $author->getValidationFailures();
     $this->assertEquals(1, count($failures), "Expected 1 column to fail validation.");
     $this->assertEquals(array(AuthorPeer::EMAIL), array_keys($failures), "Expected EMAIL to fail validation.");
     $validator = $failures[AuthorPeer::EMAIL]->getValidator();
     $this->assertTrue($validator instanceof MatchValidator, "Expected validator that failed to be MatchValidator");
 }