php - Zend framework - form method valid not work -
i have come problem zend form valid not work? can tell me how can fix problem? code - form setup:
<?php class application_form_register extends zend_form { public function init() { /* form elements & other definitions here ... */ $this->setmethod('post'); $this->setattrib('class', 'register'); $this->setattrib('id', 'register_form'); //add email field $this->addelement('text', 'register_email', array( 'label' => 'your email address:', 'required' => true, 'filters' => array('stringtrim'), 'validators' => array('emailaddress',) ) ); $email_field = $this->getelement('register_email'); $email_field->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_email_label')) )); $email_field->setattrib('class', 'register_field'); $email_field->setattrib('placeholder', 'eg: example@gmail.com'); //add retype email $this->addelement('text', 'retype_register_email', array( 'label' => 'retype email address:', 'required' => true, 'filters' => array('stringtrim'), 'validators' => array('emailaddress',) ) ); $emailconfim_field = $this->getelement('retype_register_email'); $emailconfim_field->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_email_label')) )); $emailconfim_field->setattrib('class', 'register_field'); $emailconfim_field->setattrib('placeholder', 'this field used when login'); //add first name field $this->addelement('text', 'register_first_name', array( 'label' => 'first name: ', 'required' => true, 'filters' => array('stringtrim'), ) ); $name_field = $this->getelement('register_first_name'); $name_field->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_name_label')) )); $name_field->setattrib('class', 'register_field'); $name_field->setattrib('placeholder', 'eg: michael'); //add last name field $this->addelement('text', 'register_last_name', array( 'label' => 'last name: ', 'required' => true, 'filters' => array('stringtrim'), ) ); $name_field = $this->getelement('register_last_name'); $name_field->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_name_label')) )); $name_field->setattrib('class', 'register_field'); $name_field->setattrib('placeholder', 'eg: lee'); //add password field $this->addelement('password', 'register_password', array( 'label' => 'password: ', 'required' => true, 'filters' => array('stringtrim'), ) ); $password_field = $this->getelement('register_password'); $password_field->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_password_label')) )); $password_field->setattrib('class', 'register_field'); $password_field->setattrib('placeholder', 'enter password here'); //add retype password field $this->addelement('password', 'register_retype_password', array( 'label' => 'confirm password: ', 'required' => true, 'filters' => array('stringtrim'), ) ); $password_confim_field = $this->getelement('register_retype_password'); $password_confim_field->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_repassword_label')) )); $password_confim_field->setattrib('class', 'register_field'); $password_confim_field->setattrib('placeholder', 'retype password here'); //add question field $this->addelement('select', 'password_recovery_question', array( 'label' => 'choose 1 question password recovery', 'value' => 'question_list', 'multioptions' => array( 'null' => 'select 1 question', 'name of secondary school?' => 'name of secondary school?', 'what favorite game?' => 'what favorite game?', 'what home town?' => 'what home town?', 'what dream?' => 'what dream?', 'whos best friend?' => 'whos best friend?', ) ) ); $password_question = $this->getelement('password_recovery_question'); $password_question->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_question_label')) )); $password_question->setattrib('class', 'register_field'); //add answer question field $this->addelement('text', 'answer_to_question', array( 'label' => 'your answer: ', 'required' => true, 'filters' => array('stringtrim'), ) ); $answer = $this->getelement('answer_to_question'); $answer->setdecorators(array( 'viewhelper', 'label', new zend_form_decorator_htmltag(array('tag' => 'div', 'id' => 'register_answer_label')) )); $answer->setattrib('class', 'register_field'); //add register button $this->addelement('submit', 'submit', array( 'ignore' => true, 'label' => '注册', ) ); $button = $this->getelement('submit'); $button->setdecorators(array( 'viewhelper', array('htmltag', array('tag' => 'div', 'id' => 'register_submit_label')) )); $button->setattrib('class', 'register_button'); } }
the code - signup code:
public function signupaction() { // action body $users = new application_model_dbtable_user(); $form = new application_form_register(); $this->view->form = $form; if($this->getrequest()->ispost()) { echo "1"; if($form->isvalid($_post)) { echo "2"; $data = $form->getvalues(); $data_insert = array( 'c_email' => $data['register_email'], 'c_fname' => $data['register_first_name'], 'c_lname' => $data['register_last_name'], 'c_question' => $data['password_recovery_question'], 'c_answer' => $data['answer_to_question'], 'c_password' => sha1($data['register_password']), ); $users->insert($data_insert); if($data['register_password'] != $data['register_retype_password']) { echo $this->view->errormessage = 'password not match!'; return; } elseif ($users->checkunquie($data['register_email'])) { echo $this->view->errormessage = 'username exist'; return; } else { $users->insert($data_insert); } } } }
the problem when submit form data, cannot read data form field. have tried debug, add echo after first if statement work(echo "1"). problem occur on second if statement, echo "2" not display on browser. there other method valid form?
$_post not recognized. should replace $data = $this->_request->getpost();
Comments
Post a Comment