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.

Reply via email to