다른 컨트롤러에서 양식에서 데이터에 액세스하는 방법에 대한 몇 가지 질문 후 내 문제 중 하나를 해결하는 방법 (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") 에코를 넣어, 모든 시간은 작동 . 표시되는 것은 '게시'뿐이고 두 번째 에코는 아무 것도 표시하지 않습니다.
다른 컨트롤러에서 양식의 데이터를 얻는 방법을 이해하지 못했습니다.
누군가가 도와 줄 수 있습니까? 나는 왜 그것이 작동하지 않는지 모른다.
감사 :이 작업을 수행하는 일반적인 방법은 (또한 제출 된 데이터의 유효성을 검사) 형태의
isValid()
메소드를 호출하는 것입니다. .. 이제 모든 것이 완벽하게 작동합니다. 다시 한번 감사드립니다! –