我在Zend表单中有一个select元素。要填充元素的multiOptions数组,我在返回数组的模型上调用静态方法。我需要将参数传递给静态方法,但首先我需要将参数传递给Zend Form。我怎么能这样做?
我尝试将数组传递给Zend Form构造函数,然后在表单中使用getAttrib()。这工作正常但是该参数也在表单上显示为HTML参数,这不是我的意图。
谢谢!
答案 0 :(得分:1)
为防止构造函数选项显示为表单属性,您必须为每个传递的选项指定setter
。
示例:
class Forms_Hello extends Zend_Form
{
protected $_names = array();
public function init()
{
$names = $this->getNames();
}
public function setNames($names)
{
$this->_names = $names
}
public function getNames()
{
return $this->_names;
}
}
$form = new Forms_Hello(array(
'names' => array(
1 => 'hello',
2 => 'world'
));
答案 1 :(得分:0)
好的,所以我确定在实例化对象之后从表单对象外部设置它。不完全是我想要的但是可行的,但是......
答案 2 :(得分:0)
Zend_Form
构造函数在表单中的方法名称中查找特定模式。模式为setMethodName
。构造函数调用类中的MethodName()
并将参数传递给它。
所以你在课堂上会有这个:
class My_Form extends Zend_Form
{
protected $_myParameters;
public function setParams($myParameters)
{
$this->_myParameters = $myParameters;
}
然后将参数传递给表单:
$form = new My_Form( array('params' => $myParameters) );
因此,您可以使用任何其他名称(当然,如果params
中尚未存在),而不是Zend_Form
。