Created
December 21, 2014 16:49
-
-
Save Doopin/7c484da95cb8777bf3fb to your computer and use it in GitHub Desktop.
Filter, Form, Validation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//My Filter Class | |
<?php | |
namespace Admeup\Form\FormValidator; | |
use Zend\InputFilter\Factory as InputFactory; | |
use Zend\InputFilter\InputFilter; | |
use Zend\InputFilter\InputFilterAwareInterface; | |
use Zend\InputFilter\InputFilterInterface; | |
class NewsletterFormValidator implements InputFilterAwareInterface { | |
protected $m_inputFilter; | |
public $uid, $email, $phone, $company, $lname, $website, $fname; | |
public function getInputFilter() { | |
if(!$this->m_inputFilter){ | |
$inputFilter = new InputFilter(); | |
$factory = new InputFactory(); | |
$inputFilter->add($factory->createInput(array( | |
'name' => 'uid', | |
'filters' => array( | |
array('name' => 'Int'), | |
) | |
))); | |
$inputFilter->add($factory->createInput(array( | |
'name' => 'email', | |
'validators' => array( | |
array( | |
'name' => 'EmailAddress', | |
), | |
), | |
))); | |
$inputFilter->add($factory->createInput(array( | |
'name' => 'phone', | |
'required' => true, | |
'filters' => array( | |
array('name' => 'StripTags'), | |
array('name' => 'StringTrim'), | |
), | |
'validators' => array( | |
array( | |
'name' => 'StringLength', | |
'options' => array( | |
'encoding' => 'UTF-8', | |
'min' => 3, | |
'max' => 10, | |
), | |
), | |
), | |
))); | |
$inputFilter->add($factory->createInput(array( | |
'name' => 'lname', | |
'required' => true, | |
'filters' => array( | |
array('name' => 'StripTags'), | |
array('name' => 'StringTrim'), | |
), | |
'validators' => array( | |
array( | |
'name' => 'StringLength', | |
'options' => array( | |
'encoding' => 'UTF-8', | |
'min' => 3, | |
'max' => 10, | |
), | |
), | |
), | |
))); | |
$inputFilter->add($factory->createInput(array( | |
'name' => 'fname', | |
'required' => true, | |
'filters' => array( | |
array('name' => 'StripTags'), | |
array('name' => 'StringTrim'), | |
), | |
'validators' => array( | |
array( | |
'name' => 'StringLength', | |
'options' => array( | |
'encoding' => 'UTF-8', | |
'min' => 3, | |
'max' => 10, | |
), | |
), | |
), | |
))); | |
$inputFilter->add($factory->createInput(array( | |
'name' => 'website', | |
'required' => true, | |
'filters' => array( | |
array('name' => 'StripTags'), | |
array('name' => 'StringTrim'), | |
), | |
'validators' => array( | |
array( | |
'name' => 'StringLength', | |
'options' => array( | |
'encoding' => 'UTF-8', | |
'min' => 3, | |
'max' => 10, | |
), | |
), | |
), | |
))); | |
$inputFilter->add($factory->createInput(array( | |
'name' => 'company', | |
'required' => true, | |
'filters' => array( | |
array('name' => 'StripTags'), | |
array('name' => 'StringTrim'), | |
), | |
'validators' => array( | |
array( | |
'name' => 'StringLength', | |
'options' => array( | |
'encoding' => 'UTF-8', | |
'min' => 3, | |
'max' => 10, | |
), | |
), | |
), | |
))); | |
$this->m_inputFilter = $inputFilter; | |
} | |
return $this->m_inputFilter; | |
} | |
public function setInputFilter(InputFilterInterface $inputFilter){ | |
throw new \Exception("Matter in setInputFilter of NewsletterFormValidator"); | |
} | |
} | |
//Now My Controller | |
//Please just focus on the isPost() statement | |
public function newsletterAction() { | |
$newsletterRequest = $this->getRequest(); | |
$message = ''; | |
if($newsletterRequest->isPost()){ // <-- Please just focus in this statement | |
//Admeup\Form\FormValidator\NewsletterFormValidator; | |
$newsletterFormValidator = new NewsletterFormValidator(); | |
// If I uncomment this, the form is no more valid. | |
$this->m_newsletterForm->setInputFilter($newsletterFormValidator->getInputFilter()); | |
$this->m_newsletterForm->setData($newsletterRequest->getPost()); | |
if($this->m_newsletterForm->isValid()){ | |
$this->m_admeupService->saveNewsletter($this->m_newsletterForm->getData()); | |
return $this->redirect()->toRoute('home/newsletter/success', array(), array( | |
'query' => array('subscribed' => $this->m_newsletterForm->getData()->getFname().' '.$this->m_newsletterForm->getData()->getLname()) | |
), true); | |
} | |
else{ | |
$message = 'Erreur! Veillez reéssayer...'; | |
return new ViewModel(array( | |
'newsletterForm' => $this->m_newsletterForm, | |
'femail' => $this->params()->fromQuery('femail'), | |
'message' => $message | |
)); | |
} | |
} | |
if($newsletterRequest->isGet()){ | |
return new ViewModel(array( | |
'newsletterForm' => $this->m_newsletterForm, | |
'femail' => $this->params()->fromQuery('femail'), | |
'message' => $message, | |
)); | |
} | |
else{ | |
return new ViewModel(array( | |
'newsletterForm' => $this->m_newsletterForm, | |
)); | |
} | |
} |
nomaanp
commented
Dec 21, 2014
It doesn't work.
The mandatory is email field and his filter is
$inputFilter->add($factory->createInput(array(
'name' => 'email',
'validators' => array(
array(
'name' => 'EmailAddress',
),
),
)));
and all others have this filter
$inputFilter->add($factory->createInput(array(
'name' => 'lname',
'allow_empty' => true,
'required' => true,
'filters' => array(
array('name' => 'StripTags'),
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 3,
'max' => 10,
),
),
),
)));
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment