2012-11-29 5 views
0

다른 컨트롤러에서 양식에서 데이터에 액세스하는 방법에 대한 몇 가지 질문 후 내 문제 중 하나를 해결하는 방법 (http://stackoverflow.com/questions/13609611/using-several-modules-in-the- 같은 - 뷰) 나는 또 하나있다.젠드 -보기 도우미

다른 컨트롤러에서이 양식의 결과에 액세스해야하므로보기 도우미에서 양식을 만들었습니다. 그래서 여기

class Zend_View_Helper_QuickSearch extends Zend_View_Helper_Abstract 
{ 
    public function quickSearch() 
    { 
    $form = new Application_Form_QuickSearchForm(); 
    return $form; 
    } 
} 

이 QuickSearchForm.php

class Application_Form_QuickSearchForm extends Zend_Form 

{내 메인 페이지보기에서

public function init() 
{ 
    $this->setMethod('post'); 
    $this->setAction('/search/quicksearch'); 
    $this->addElement('text', 'searchLocation', array(
      'label' => 'Location:', 
      'required' => true, 
      'filters' => array('StringToUpper') 
      )); 
    //[some other elements] 
    $this->addElement('submit', 'submit', array(
      'ignore' => true, 
      'label' => 'Search', 
    )); 
} 

를 호출 QuickSearch.php라는 내보기 도우미, 나는 viewhelper 전화 와 함께

echo $this->quickSearch(); 

내 양식에 액세스 할 수 있기 때문에 효과가 있습니다.

양식을 제출하면 양식에서 데이터에 액세스하려고 할 때/search/quicksearch가 호출되지만 비어있는 것처럼 보입니다. 여기

내 검색 컨트롤러 (SearchController.php)

class SearchController extends Zend_Controller_Action 
{ 

public function init() 
{ 
    /* Initialize action controller here */ 
} 

public function indexAction() 
{ 
    // action body 
} 

public function quicksearchAction() 
{ 
    $form = new Application_Form_QuickSearchForm(); 

    if ($this->getRequest()->isPost()) 
    { 
     echo("post"); 
     $data = $form->getValues(); 
     echo($data['searchLocation']); 
    } 

} 

}

은 내가 POST 요청을 얻고 있었다 있는지 ("POST") 에코를 넣어, 모든 시간은 작동 . 표시되는 것은 '게시'뿐이고 두 번째 에코는 아무 것도 표시하지 않습니다.

다른 컨트롤러에서 양식의 데이터를 얻는 방법을 이해하지 못했습니다.

누군가가 도와 줄 수 있습니까? 나는 왜 그것이 작동하지 않는지 모른다.

답변

2

양식 데이터에 게시물 데이터를 전달해야합니다. 나는 내가 POST 요청을 얻고 싶었다 지적 결코 실현 솔루션을보고,

public function quicksearchAction() 
{ 
    $form = new Application_Form_QuickSearchForm(); 

    if ($this->getRequest()->isPost()) { 
     if ($form->isValid($this->getRequest()->getPost()) { 
      $data = $form->getValues(); 
      echo $data['searchLocation']; 
     } 
    } 
} 
+0

감사 :이 작업을 수행하는 일반적인 방법은 (또한 제출 된 데이터의 유효성을 검사) 형태의 isValid() 메소드를 호출하는 것입니다. .. 이제 모든 것이 완벽하게 작동합니다. 다시 한번 감사드립니다! –

관련 문제