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参数本身?
感谢
卢卡
答
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
为什么不是在窗体中创建字段,然后在窗体已经实例化的时候在控制器中设置它的值? – mkilmanas 2011-06-01 11:49:33
我想我更喜欢它..但我可能错了 – luca 2011-06-01 12:15:53