Zend talk。我需要设置一个隐藏的表单字段作为url参数的值。 我有:
class Form_Custom extends Zend_Form
{
public function init()
{
[..]
$id = new Zend_Form_Element_Hidden('name');
[..]
}
}
我知道我可以在实例化类时在一个选项数组中传递它(来自控制器)。但是我怎么能告诉表单查找URL参数呢?
由于
卢卡
答案 0 :(得分: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 ) );
}
}
使用上面的构造,您可以在创建表单时填充字段,也可以使用控制器中的$ form-> fill()手动填充
答案 1 :(得分: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变量传递给隐藏字段,您就应该完成所有操作:)
答案 2 :(得分:0)
我认为没有办法做到这一点,因为Zend_form与控制器分离。 你可以在注册表中注册你的pos / get变量,但那很脏。您也可以直接访问$ _GET / $ _ POST ...
或者在您的控制器中,您可以:
$form = new Zend_form();
$form->populate($this->_getAllParams());
将使用$ _POST / $ _ GET
中的所有值填充表单