2014-01-16 3 views
1

У меня есть форма в моем индексе, и когда она действительна, она перенаправляется на новое представление, и я хочу, чтобы на этом новом представлении было получено имя, которое было введено в форму, как я могу это сделать?Как передать переменные в Zend?

мой контроллер:

public function indexAction() 
{ 
    // action body 
    $eform = new Application_Form_Eform(); 
    if ($this->_request->isPost()) { 
     $formData = $this->_request->getPost(); 
     if ($eform->isValid($formData)) { 
      $nameInput = $eform->getValue('nameInput'); 
      $this->_helper->redirector->gotoRoute(array('controller'=> 'index','action' =>'result', 'email' => $nameInput)); 
      $this->_helper->redirector('result'); 
      exit; 
     } else { 
      $eform->populate($formData); 
     } 
    } 

    $this->view->form = $eform; 
} 

public function resultAction() 
{ 
    $nameInput = $this->_getParam('email'); 
    $this->view->email = $nameInput; 
} 

result.phtml

<?php echo $this->name;?> 

как я могу передать переменную name, которая была введена в форме и отображать его на новый взгляд resultAction? Благодаря!

+0

Почему вы поменяете не процесс на месте? – zerkms

+0

Используете ли вы ZF1 или ZF2 – Mubo

+0

@zerkms, вы можете увидеть здесь мой вопрос и ответ, который я применил, если у вас есть лучшее решение, ответьте, так что я бы знал, что лучше всего применять Спасибо! – Liza

ответ

2

Вам не нужно выполнить Zend_Controller_Action_Helper_Redirector::direct метод после Zend_Controller_Action_Helper_Redirector::gotoRoute, оставить только первый звонок, и использовать вместо gotoRouteAndExit:

$this->_helper->redirector->gotoRouteAndExit (array(
    'controller' => 'index', 
    'action'  =>'result', 
    'email'  => $nameInput)); 
+0

спасибо за ваш ответ, я заменил '$ this -> _ helper-> redirector-> gotoRoute (массив ('controller' => 'index', 'action' => 'result', 'email' => $ nameInput)) \t \t \t $ this -> _ helper-> redirector ('result'); ' с вашим кодом, но теперь он даже не идет на страницу результатов ... любые мысли? – Liza

+0

Благодарим вас за обновление -> теперь он будет выводить страницу, но не отображать письмо. страница пуста :(я иду сумасшедший над этим b ecause я не понимаю, где проблема :(любые идеи? – Liza

+0

Я использую Zend_Form, Zend framework 1.12, а при запуске на Wamp с rewritemod включен – Liza

1

Если я правильно понял вопрос. Вы хотите отправить URL-адрес URI при перенаправлении. Поэтому вы можете попробовать это.

class IndexController extends Zend_Controller_Action 
{ 
     public function indexAction() 
     { 
      // action body 
      $C_form = new Application_Form_C_form(); 
        VALIDATION.... 


     $nameInput = $C_form->getValue('nameInput'); 

     //Here you redirecting to result page 
     //and URI PARAM nameInput is sent through HTTP 


     $this->_helper->redirector->gotoRoute(array('controller'=> 'index','action' =>'result', 'name' => $nameInput)); 

     } 

     public function resultAction() 
     { 
     //Here get the PARAM name 
     //from the index Action 
     $nameInput = $this->_getParam('name'); 
     //If you want to display on the view 
     $this->view->name = $nameInput; 


     } 
} 
    // in Result page view 

     //just echo the assigned view like this. 
     <?php echo $this->name;?> 
+0

И как отображается имя $ name в на странице результатов? ' name;'?> – Liza

+0

, что кажется нормально. Надеюсь, что добавит – Mubo

Смежные вопросы