2011-06-01 89 views
2

Zend talk.I需要設置一個隱藏的表單字段作爲url參數的值。 我:Zend:從Zend_Form中獲取Url參數

class Form_Custom extends Zend_Form 
{ 
    public function init() 
    { 
    [..] 
    $id = new Zend_Form_Element_Hidden('name'); 
    [..] 
    } 
} 

我知道我可以通過它(從控制器),而實例化class.But選項數組裏面我怎麼能告訴表單來尋找URL參數本身?

感謝

盧卡

+3

爲什麼不是在窗體中創建字段,然後在窗體已經實例化的時候在控制器中設置它的值? – mkilmanas 2011-06-01 11:49:33

+0

我想我更喜歡它..但我可能錯了 – luca 2011-06-01 12:15:53

回答

4
class Form_Custom extends Zend_Form 
{ 
    public function init() 
    { 
    //[..] 
    $id = new Zend_Form_Element_Hidden('name'); 
    //[..] 
    $this->fill(); 
    } 

    public function fill() 
    { 
     $this->name->setValue(Zend_Controller_Front::getInstance()->getRequest()->getParam('name', null)); 
    } 
} 

使用上述建設創建以及手動使用$形式 - >填寫表格時,你可以填充你的領域()從控制器

+0

因爲Jimmy C.提出的解決方案更好 – 2014-09-09 20:22:23

1

如果你想在URL值傳遞給你的隱藏字段,可以使用以下方法:

在你的控制器:

// Get wanted value from url 
    $var = $this->_request->getParam('url'); 

    // Get correct form using Formloader helper (or any other method that you might be using) 
    $this->view->form = $this->_helper->FormLoader('formname', array('url'=> $var); 

並在您的表單中添加以下內容:

protected $_url; 

public function init(){ 
    $url = $this->_url; 

    /*rest of your form*/ 
} 

public function setUrl($value){ 
    $this->_url = $value; 
} 

就是這樣!只是通過$ url變量中的表單中的隱藏字段,你應該是所有做:)

0

我不認爲有辦法做到這一點,因爲Zend_form從控制器分離。 你可以在註冊表中註冊你的pos/get變量,但這很髒。你也可以直接訪問$ _GET/$ _ POST ...

或者在你的控制器,你可以這樣做:

$form = new Zend_form(); 
$form->populate($this->_getAllParams()); 

這將填充您的形式從$ _ POST所有值/ $ _ GET