2010-10-11 65 views
0

這裏是我的代碼:Zend_Form中不顯示數據

<?php 

class IndexController extends Zend_Controller_Action 
{ 

    public function indexAction() 
    { 
     $this->_forward('search'); 
    } 

    public function searchAction() 
    { 
     if($this->getRequest()->isGet()) 
     { 
      $form = $this->getForm(); 

      $value = $form->getValue('search'); 
      echo "'", $value, "'"; // <-- prints '' 
     } 

     $this->view->form = $this->getForm(); 
    } 

    public function getForm() 
    { 
     $form = new Zend_Form(); 
     $form->setAction('/index/search') 
      ->setMethod('get'); 

     $search = $form->createElement('text', 'search'); 
     $search->addFilter('StripTags') 
       ->addFilter('StringTrim'); 

     // Add elements to form: 

     $form->addElement($search) 
      ->addElement('submit', 'submit', array('label' => 'Search')); 

     return $form; 
    } 
} 

searchAction() $值始終是空白,甚至在我提交表單,我看到在URL中的數據。問題是什麼?

編輯:我修正了getValue()getValues()但它仍然不工作。

回答

2

在你能夠使用 - > getValue();你必須驗證表單。

public function searchAction() 
    { 
     if($this->getRequest()->isGet()) 
     { 
      $form = $this->getForm(); 

      if ($form->isValid()) { 
       $value = $form->getValue('search'); 
       echo "'", $value, "'"; // <-- prints '' 
      } else { 
       // what ever 
      } 



     } 

     $this->view->form = $this->getForm(); 
    } 
0

你想要的功能是getValue,而不是getValues。

一個微妙的區別,但他們做了兩件完全不同的事情。

+0

好的,我固定,但仍然沒有愛。我無法獲得任何價值,只有空虛。 – moteutsch 2010-10-11 16:34:08

1

你需要傳遞$this->_request->getParams()$form->isValid(),否則表單不會有任何價值的工作。