Chris, thanks for your replay. My problem still not solved

Defining hidden fields like
 
$moduleName = $this->createElement('hidden','moduleName'); 
            $moduleName->setValue(moduleName); 

$controllerName = $this->createElement('hidden','controllerName'); 
            $controllerName->setValue($controllerName); 

$actionName = $this->createElement('hidden','actionName'); 
            $actionName->setValue($actionName);

Is not work in this case, because it will get current
module-controller-action name and form should re-directed to as per these
value.  So If I submitted the form from index page, I need to create an
action for this in IndexController and if it is from about us page, need to
create an action at AboutusController and so on

To avoid that, I used the code  ‘$this->setAction('contactus/index'); ‘  so
that  the form action, index at ContactusController will handle the request.

So if I submit the form from index page(IndexController), the form should go
to ContactusController and  re-directed back to index page after sending the
mail

Everything working fine and mail is gone, except that validation message and
other messages like (‘mail sent successfully’) is not working

I had tried ‘flashMessenger’ and it is not working for this case.


chrisweb wrote:
> 
> 
> riyas wrote:
>> 
>>>>>everything works fine and mail is gone if I fill this form except that
the form is not validated. For example the mail may sent without ‘FullName’,
which is a required field
>> 
>>>>>another problem is unable to display  messages like ‘'Thank you’ . 
>> 
>>>>>this may because of  $this->_helper->redirector method I used. The form
is redirected and hence lost the values. If I use $this->_helper->forwarded
or $this_forward() it also doesn’t work
>> 
>> Any one can please suggest a method for me to dipsply validation message
>> and other messages properly? Sorry for my poor English and thanks in
>> advance
>>      
>> 
>> 
> 
> Strange validation should work ...
> 
> Use the flashMessenger helper to create your messages, something like this
> ...
> 
> class Form_ContactForm extends Zend_Form { 
>       
>     public function __construct($options = null, $moduleName = '',
> $controllerName = '', $actionName = '') { 
>       
>         parent::__construct($options);
>         
>         $this ->setName('testform')
>                       ->setAction('')
>                       ->setMethod('post')
>                       ->setAttrib('id', 'testform')
>                       ->setAttrib('accept-charset', 'UTF-8')
>                       //->setAttrib('enctype', 'multipart/form-data');
>                               ->setAttrib('enctype', 
> 'application/x-www-form-urlencoded');
> 
> $moduleName = $this->createElement('hidden','moduleName');
>             $moduleName->setValue(moduleName);
> 
> $controllerName = $this->createElement('hidden','controllerName');
>             $controllerName->setValue($controllerName); 
> 
> $actionName = $this->createElement('hidden','actionName');
>             $actionName->setValue($actionName); 
>                
>                 $FullName = $this->createElement('text','FullName');
>         $FullName->setLabel('Full Name')
>                 ->setRequired(true)
>                                 ->addFilter('StripTags')
>                                 ->addFilter('StringTrim')
>                                 ->addValidator('NotEmpty');
>                
>                 $Email = $this->createElement('text','Email');
>         $Email->setLabel('Email')
>                 ->setRequired(true)
>                                 ->addFilter('StringTrim')
>                                 ->addValidator('EmailAddress')
>                                 ->addValidator('NotEmpty');
>                
>         $Message = $this->createElement('textarea','Message');
>         $Message->setLabel('Message')
>                                 ->setAttribs( array('rows' => 3, 'cols' =>
> 20 ))
>                 ->setRequired(true)
>                                 ->addFilter('StripTags')
>                                 ->addFilter('StringTrim')
>                                 ->addValidator('NotEmpty');
> 
>                
> 
>         $submit = $this->createElement('submit','submit');
>         $submit->setLabel('Submit')
>                 ->setIgnore(true);
> 
>                 $this->addElements(array( $FullName,
>                                                                        
> $Email,
>                                                                        
> $Message,
>                                                                        
> $submit, ));
>         }
> } 
> 
> -----
> 
> 
>               $front = Zend_Controller_Front::getInstance();
>               
>               $moduleName = $front->getRequest()->getModuleName();
>               $controllerName = $front->getRequest()->getControllerName();
>               $actionName = $front->getRequest()->getActionName();
> 
> $options = null;
> 
>  $this->view->form = $form;
> 
> -----
> 
> 
>       public function indexAction() {
>               
>               $options = null;
> 
> $this->_helper->layout()->disableLayout();
>                 $this->_helper->viewRenderer->setNoRender(); 
>               
>         $form = new Form_ContactForm($options, $moduleName,
> $controllerName, $actionName);
> 
>         if ($this->_request->isPost()) {
>             $formData = $this->_request->getPost();
>             if ($form->isValid($formData)) {
>            
>                    
>                                 $moduleName = $formData['moduleName'];
>                                                               $controllerName 
> = $formData['controllerName'];
>                                                               $actionName = 
> $formData['actionName'];
>                                 $FullName = $formData['FullName'];
>                                 $Email = $formData['Email'];
>                                 $Message = $formData['Message'];
>                                 if( strlen(trim( $FullName) ) ){
>                                
>                                         $mailBody .=
> "Name:\r\n\t".$FullName ."\r\n\r\n";
>                                         $mailBody .= "Email:\r\n\t".$Email
> ."\r\n\r\n";
>                                         $mailBody .=
> "Message:\r\n\t".$Message ."\r\n\r\n";
>                        
>                                         $mail = new Zend_Mail();
>                                         $transport = new
> Zend_Mail_Transport_Smtp('localhost');
>                                        
> Zend_Mail::setDefaultTransport($transport);
>                                         $mail->setSubject('Contact
> Enquiry.');
>                                         $mail->setFrom($Email, $FullName);
>                                         $mail->addTo('sd...@dgagg.com');
>                                         $mail->setBodyText($mailBody);  
>                            
>                                         if( $mail->send() ){
>                                                 $flashMessenger =
> $this->_helper->getHelper('FlashMessenger');
>                                                                               
>                 $flashMessenger->addMessage('The Message');
>                                                                               
>                 
>                                                                               
>                 $this->_helper->redirector('index', 'index', 'default');
>                                         }else{
>                                                 $flashMessenger =
> $this->_helper->getHelper('FlashMessenger');
>                                                                               
>                 $flashMessenger->addMessage('The Message');
>                                                                               
>                 
>                                                                               
>                 $this->_helper->redirector('index', 'index', 'default');
>                                         }
>                                 }
>                     } else {
>                                 $flashMessenger =
> $this->_helper->getHelper('FlashMessenger');
>                                                               
> $flashMessenger->addMessage('The Message');
>                                                               
>                                                               
> $this->_helper->redirector('index', 'index', 'default');
>             }
>         }
>          
>               
>       }
> 
> 

-- 
View this message in context: 
http://www.nabble.com/zend_form%3Adisplay-validation-and-error-messages-tp25340836p25378498.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to