public function testValidatorScalarInvalid() { $data = array('month' => '6abc '); $filters = array('month' => array()); $validators = array('month' => 'digits'); $input = new Zend_Filter_Input($filters, $validators, $data); $invalid = $input->getInvalid(); $msg = $invalid['month'][0]; $this->assertEquals("'6abc ' contains not only digit characters", $msg); }
public function testValidatorGetInvalid() { $data = array('month' => '6abc '); $validators = array('month' => 'digits', 'field2' => array('digits', 'presence' => 'required')); $input = new Zend_Filter_Input(null, $validators, $data); $this->assertTrue($input->hasMissing(), 'Expected hasMissing() to return true'); $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(); $invalid = $input->getInvalid(); $missing = $input->getMissing(); $this->assertType('array', $messages); $this->assertEquals(array('month', 'field2'), array_keys($messages)); $this->assertType('array', $invalid); $this->assertEquals(array('month'), array_keys($invalid)); $this->assertType('array', $missing); $this->assertEquals(array('field2'), array_keys($missing)); $this->assertEquals(array_merge($invalid, $missing), $messages); }
/** * Creates a Conjoon_Error_Form based on the fields that where marked as * errorneous in the passed filter-instance. * * @param Zend_Filter_Input $filter * @param Zend_Filter_Exception $e * * @return Conjoon_Error_Form */ public static function fromFilter(Zend_Filter_Input $filter, Zend_Filter_Exception $e) { $error = self::fromException($e, 'Conjoon_Error_Form'); $fields = array(); if ($filter->hasMissing()) { foreach ($filter->getMissing() as $f => $mes) { $fields[$f] = array_values($mes); } } else { if ($filter->hasInvalid()) { foreach ($filter->getInvalid() as $f => $mes) { $fields[$f] = array_values($mes); } } } $error->setMessage("Error in user input. The following fields " . "where missing or contained invalid data: " . implode('; ', array_keys($fields))); $error->setLevel(self::LEVEL_WARNING); $error->setFields($fields); return $error; }
/** * 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()); } }