vRandom wrote:
>
>
> I was able to get your _createElement function to create elements that did
> validate as expected. I have something similar but it's not using the
> zend_form class, so I have to manaually test each field for validation.
> Though, after making this test code - I am likely to redo my original form
> now...
>
> Code I used to test your function is listed below.
>
> Hope it helps.
>
> Terre
>
> //
> // default action
> //
> public function indexAction()
> {
>
> $this->form = new Zend_Form;
>
> if ($this->getRequest()->isPost()) {
> if($this->validateForm($this->getForm(), $_POST)) {
> // success!
> echo 'post is valid';
> } else {
> // failure!
> echo 'post is invalid';
> // dump the errors to the user
> Zend_Debug::dump($this->FormErrors);
> }
> }
>
> echo $this->getForm($_POST)->render();
> }
>
> //
> // make the form
> //
> function getForm($data = array()) {
>
> $this->form->setAction('/manage/')
> ->setMethod('post');
> $this->form->setAttrib('id', 'login');
>
> // quick and dirty return posted values...
> if (isset($data['email'])) {
> $email = $this->_createElement('email', 'Email Address',
> 'email', $data['email']);
> } else {
> $email = $this->_createElement('email', 'Email Address',
> 'email');
> }
>
> $elm2 = $this->_createElement('something', 'something', 'text');
>
>
> $this->form->addElement($email)
> ->addElement($elm1)
> ->addElement('submit', 'login', array('label' =>
> 'Login'));
>
> return $this->form;
>
> }
> //
> // found one someones blog for storing the error messages , slightly
> modified
> //
> protected function validateForm(Zend_Form $form, array $data) {
>
> if(!$form->isValid($data)) {
> foreach($form->getMessages() as $field => $message)
> {
> foreach($message as $error) {
> $this->FormErrors[] = array($field
> => $error);
> }
> }
> return false;
> }
> return true;
> }
>
> //
> // added in a new case for your _createElement
> //
> case 'email':
> $element = new Zend_Form_Element_Text($name);
> $element->addValidator('EmailAddress');
> $element->setOptions(array('maxlength' => 125));
> break;
>
> // sample page return
> post is invalid
>
> array(2) {
> [0] => array(1) {
> ["email"] => string(72) "'d' is not a valid email address in the basic
> format [EMAIL PROTECTED]"
> }
> [1] => array(1) {
> ["something"] => string(49) "Value is empty, but a non-empty value is
> required"
> }
> }
>
>
>
>
>
> -----Original Message-----
> From: nwhiting [mailto:[EMAIL PROTECTED]
> Sent: Monday, November 03, 2008 10:38 AM
> To: [email protected]
> Subject: Re: [fw-general] Zend Form Validation
>
>
>
>
> nwhiting wrote:
>>
>>
>> Matthew Weier O'Phinney-3 wrote:
>>>
>>> -- nwhiting <[EMAIL PROTECTED]> wrote (on Friday, 31 October
>>> 2008, 07:34 AM -0700):
>>>> I am having a small problem with validating input....
>>>> I have everything setup correctly....but it seems that every time I
>>>> submit the form it will always validate as true no matter what
>>>> content is submitted in the form.
>>>
>>> Nobody can help you unless you provide your form details...
>>>
>>> --
>>> Matthew Weier O'Phinney
>>> Software Architect | [EMAIL PROTECTED]
>>> Zend Framework | http://framework.zend.com/
>>>
>>>
>> heres the code i am using....
>>
>> protected function _createElement($name, $label, $type, $value = null,
>> $desc = null)
>> {
>> $element = null;
>> switch($type)
>> {
>> case 'text':
>> default:
>> $element = new Zend_Form_Element_Text($name);
>> $element->setOptions(array('maxlength' => 125));
>> break;
>> case 'textarea':
>> $element = new Zend_Form_Element_Textarea($name);
>> $element->setOptions(array('rows' => 10, 'cols' => 35));
>> break;
>> case 'password':
>> $element = new Zend_Form_Element_Password($name);
>> break;
>> case 'file':
>> $element = new Zend_Form_Element_File($name);
>> break;
>> case 'date':
>> $element = new Zend_Form_Element_Text($name);
>> $element->setOptions(array('dojoType' =>
>> "dijit.form.DateTextBox"));
>> break;
>> case 'countryList':
>> $locale = new Zend_Locale('en_US');
>> $countryList = ($locale->getCountryTranslationList());
>> asort($countryList, SORT_LOCALE_STRING);
>> $element = new Zend_Form_Element_Select($name);
>> $element->addMultiOptions($countryList);
>> break;
>> case 'stateList':
>> $locale = new Zend_Locale('en_US');
>> $stateList =
>> array('AL'=>"Alabama",'AK'=>"Alaska",'AZ'=>"Arizona",'AR'=>"Arkansas",
>> 'CA'=>"California",'CO'=>"Colorado",'CT'=>"Connecticut",'DE'=>"Delawar
>> e",'DC'=>"District
>> Of
>> Columbia",'FL'=>"Florida",'GA'=>"Georgia",'HI'=>"Hawaii",'ID'=>"Idaho"
>> ,'IL'=>"Illinois",'IN'=>"Indiana",'IA'=>"Iowa",'KS'=>"Kansas",'KY'=>"K
>> entucky",'LA'=>"Louisiana",'ME'=>"Maine",'MD'=>"Maryland",'MA'=>"Massa
>> chusetts",'MI'=>"Michigan",'MN'=>"Minnesota",'MS'=>"Mississippi",'MO'=
>> >"Missouri",'MT'=>"Montana",'NE'=>"Nebraska",'NV'=>"Nevada",'NH'=>"New
>> Hampshire",'NJ'=>"New Jersey",'NM'=>"New Mexico",'NY'=>"New
>> York",'NC'=>"North Carolina",'ND'=>"North
>> Dakota",'OH'=>"Ohio",'OK'=>"Oklahoma",'OR'=>"Oregon",'PA'=>"Pennsylvan
>> ia",'RI'=>"Rhode Island",'SC'=>"South Carolina",'SD'=>"South
>>
> Dakota",'TN'=>"Tennessee",'TX'=>"Texas",'UT'=>"Utah",'VT'=>"Vermont",'VA'=>"
> Virginia",'WA'=>"Washington",'WV'=>"West
>> Virginia",'WI'=>"Wisconsin",'WY'=>"Wyoming"); $state = new
>> Zend_Form_Element_Select('state');
>> $element = new Zend_Form_Element_Select($name);
>> $element->addMultiOptions($stateList);
>> break;
>>
>>
>> }
>>
>> $element->setLabel(ucwords($label));
>>
>> if ($value != null)
>> {
>> $element->setValue($value);
>> }
>>
>> if ($desc != null)
>> {
>> $element->setDescription($desc);
>> }
>>
>> $element->addValidator('alnum')
>> ->addValidator('regex', false, array('/^[a-z]/'))
>> ->setRequired(true);
>>
>> return $element;
>> }
>>
>> and rending a element is simply
>>
>> $email = $this->_createElement('email', 'Email Address', 'text',
>> $accountInfo['email']);
>>
>> and when i enter anything that is not validating aganist that it still
>> validates as true
>>
>> and the code i am using to process the form is
>>
>> if ( !$this->isMaster && $userId != $this->user->getUsername() )
>> {
>> throwException(PERM_MSG);
>> }
>> // Render out the form and check the validation
>> elseif(!$this->_getParam('submit') ||
> $this->getRequest()->isPost()
>> &&
>> !$this->form->isValid($_POST))
>> {
>> if ( ( null != $this->userGroupId &&
> $this->userGroupId == PRODUCER
>> )
>> || $this->user->getLevel() == PRODUCER )
>> {
>> if ($this->getRequest()->isPost())
>> {
>> $accountInfo = $_POST;
>> }
>> else
>> {
>> $sql = '"';
>> $result = $this->db->fetchAll($sql);
>> $accountInfo = $result[0];
>> /*
>> * Set The Date Format for dojo Must
> be in format YYYY-MM-DD
>> */
>> $birthday = explode('-',
> $accountInfo['birthday']);
>> $birthday[2] = substr($birthday2, 0,
> 2);
>> $birthdayTimestamp = mktime(null,
> null, null, $birthday[1],
>> $birthday[2], $birthday[0]);
>> $accountInfo['birthday'] =
> date('Y-m-d', $birthdayTimestamp);
>> }
>>
>>
>> // Send the users Picture to the view
>> $this->view->picture =
> $accountInfo['image'];
>>
>> // Render the form
>> $this->view->adminContent =
>> $this->admin->renderForm('producerEditLeft', 'producerEditRight',
>> $this->form, 'users/producer', $accountInfo, $accountInfo);
>> }
>> elseif ( ( null != $this->userGroupId &&
> $this->userGroupId ==
>> CORPORATE_SPONSOR ) || $this->user->getLevel() == CORPORATE_SPONSOR )
>> {
>> echo 'Master Admin Editing Sponsor';
>> }
>> elseif ( ( null != $this->userGroupId &&
> $this->userGroupId ==
>> PUBLISHER ) || $this->user->getLevel() == PUBLISHER )
>> {
>> echo 'Master Admin Editing Publisher';
>> }
>> elseif ( ( null != $this->userGroupId &&
> $this->userGroupId ==
>> CONTENT_ADMIN ) || $this->user->getLevel() == CONTENT_ADMIN )
>> {
>>
>> }
>> elseif ( ( null != $this->userGroupId &&
> $this->userGroupId ==
>> USERS )
>> || $this->user->getLevel() == USERS )
>> {
>>
>> }
>> elseif ( !$this->isMaster )
>> {
>> throwException(PERM_MSG);
>> }
>> else
>> {
>> // Master Admin Account Information
>> }
>> }
>> elseif($this->getRequest()->isPost())
>> {
>> if ( $this->userGroupId == PRODUCER ||
> $this->user->getLevel() ==
>> PRODUCER)
>> {
>> // User input will be proccessed using the
> User_Auth getPost(); to
>> validate and secure it
>> $post = $this->user->getPost();
>> if ($post['password'] != null)
>> {
>> $salt = rand(1000, 9999);
>> $password =
> sha1($post['password'].$salt);
>> $sql = 'UPDATE '.USER.' SET password
> = "'.$password.'", salt =
>> "'.$salt.'" WHERE userId = "'.$this->userId.'"';
>> $this->db->query($sql);
>> }
>>
>> $birthday = $post['birthday'] . ' 00:00:00';
>>
>> $sql = '"
>> WHERE userId =
> "'.$this->userId.'"';
>> //$this->db->query($sql);
>>
>> $sql = 'edited out';
>> //$this->db->query($sql);
>>
>> $this->admin->message('Account has been
> updated');
>>
>> }
>> elseif ( $this->userGroupId == PUBLISHER ||
> $this->user->getLevel()
>> ==
>> PUBLISHER)
>> {
>> $sql = 'Publisher Update';
>> }
>> elseif ( $this->userGroupId == CORPORATE_SPONSOR ||
>> $this->user->getLevel() == CORPORATE_SPONSOR)
>> {
>> $sql = 'SPonsor Update';
>> }
>> elseif ( $this->userGroupId == CONTENT_ADMIN ||
>> $this->user->getLevel() == ADMIN)
>> {
>> $sql = 'Content Admin Update';
>> }
>> elseif ( $this->userGroupId == USERS ||
> $this->user->getLevel() ==
>> USERS)
>> {
>> $sql = 'User Update';
>> }
>> else
>> {
>> $sql = 'Master Admin Update';
>> }
>> }
>>
>>
>>
>
> Also what im trying to do with this is put it in the _createElement method
> so the error validation is parsed in automatically when the elements are
> created
>
> -----
> Nickolas Whiting
>
> Developer
>
> http://xstudiosinc.com Xstudios
> --
> View this message in context:
> http://www.nabble.com/Zend-Form-Validation-tp20267185p20304951.html
> Sent from the Zend Framework mailing list archive at Nabble.com.
>
>
>
>
The problem i seem to be having with this is that the form is allways coming
back as validated even if the form is not yet submitted.....
-----
Nickolas Whiting
Developer
http://xstudiosinc.com Xstudios
--
View this message in context:
http://www.nabble.com/Zend-Form-Validation-tp20267185p20308622.html
Sent from the Zend Framework mailing list archive at Nabble.com.