public function testValidatorSingleInvalid() { $data = array('month' => '6abc '); $validators = array('month' => 'digits'); $input = new Zend_Filter_Input(null, $validators, $data); $this->assertFalse($input->hasMissing(), 'Expected hasMissing() to return false'); $this->assertTrue($input->hasInvalid(), 'Expected hasInvalid() to return true'); $this->assertFalse($input->hasUnknown(), 'Expected hasUnknown() to return false'); $this->assertFalse($input->hasValid(), 'Expected hasValid() to return false'); $messages = $input->getMessages(); $this->assertType('array', $messages); $this->assertEquals(array('month'), array_keys($messages)); $this->assertType('array', $messages['month']); $this->assertEquals("'6abc ' contains not only digit characters", $messages['month'][0]); $errors = $input->getErrors(); $this->assertType('array', $errors); $this->assertEquals(array('month'), array_keys($errors)); $this->assertType('array', $errors['month']); $this->assertEquals("notDigits", $errors['month'][0]); }
/** * Save changes to an existing news article, or save a new article in the database. If a new article the function will return the ID. * * @return int */ private function _saveNewsArticle() { // First of all we need to validate and sanitise the input from the form $requiredText = new Zend_Validate(); $requiredText->addValidator(new Zend_Validate_NotEmpty()); // $requiredText->addValidator(new Zend_Validate_Alnum(array('allowWhiteSpace' => true))); $filters = array('id' => 'Digits', 'newsTitle' => 'StringTrim', 'newsDate' => 'StringTrim', 'categoryList' => 'StringTrim'); $validators = array('id' => array('allowEmpty' => true), 'newsTitle' => $requiredText, 'newsContent' => array('allowEmpty' => true), 'newsDate' => 'NotEmpty', 'categoryList' => array('allowEmpty' => true)); $input = new Zend_Filter_Input($filters, $validators, $_POST); if ($input->isValid()) { // Data is all valid, formatted and sanitized so we can save it in the database $newsArticle = new Datasource_Cms_News(); if (!$input->id) { // This is a new article so we need to create a new ID $newsID = $newsArticle->addNew($input->newsTitle, $input->newsDate, $input->getUnescaped('newsContent')); } else { // This is an existing article so we can just update the data $newsArticle->saveChanges($input->id, $input->newsTitle, $input->newsDate, $input->getUnescaped('newsContent')); $newsID = $input->id; } // Now we need to link the page to the categories selected $categoryList = $input->categoryList; $newsArticle->saveCategories($newsID, $categoryList); // Changes saved - so send them back with a nice success message $this->_helper->getHelper('FlashMessenger')->addMessage(array('saved' => true)); $this->_helper->getHelper('Redirector')->goToUrl('/cms-admin/news/edit?id=' . $newsID); } else { // Invalid data in form print_r($_POST); print_r($input->getErrors()); print_r($input->getInvalid()); } }