Zend:从Zend_Form中获取Url参数

问题描述:

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

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

如果你想在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变量中的表单中的隐藏字段,你应该是所有做:)

我不认为有办法做到这一点,因为Zend_form从控制器分离。 你可以在注册表中注册你的pos/get变量,但这很脏。你也可以直接访问$ _GET/$ _ POST ...

或者在你的控制器,你可以这样做:

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

这将填充您的形式从$ _ POST所有值/ $ _ GET