如何将值注入Zend Form?

时间:2011-11-20 08:36:53

标签: zend-form

我在Zend表单中有一个select元素。要填充元素的multiOptions数组,我在返回数组的模型上调用静态方法。我需要将参数传递给静态方法,但首先我需要将参数传递给Zend Form。我怎么能这样做?

我尝试将数组传递给Zend Form构造函数,然后在表单中使用getAttrib()。这工作正常但是该参数也在表单上显示为HTML参数,这不是我的意图。

谢谢!

3 个答案:

答案 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