Zend Framework:如何将变量传递给自定义表单元素的视图助手

时间:2010-09-22 18:50:55

标签: zend-framework

所以我自己创建了一个自定义表单元素,它有一个自定义视图助手。现在我希望能够在此表单元素上设置某些参数/变量,并能够在元素的视图助手中访问它们。我怎么能这样做?

以下是我所谈论的一个例子:

将元素添加到表单中:

$element = new My_Form_Element_Picker('elementname');
$element->setFoobar('hello');
// or 
$form->addElement('Picker', 'elementname', array('foobar' => 'hello'));

表单元素:

class My_Form_Element_Picker extends Zend_Form_Element_Xhtml
{
    public $helper = 'pickerElement';
}

查看助手:

class My_View_Helper_PickerElement extends Zend_View_Helper_FormElement
{
    public function pickerElement($name, $value = null, $attribs = null)
    {
        //now I want to check if the 'foobar' option was set, otherwise use a default value
        $foobar = 'default';
    }
}

1 个答案:

答案 0 :(得分:5)

视图助手有第四个可选参数,可以帮到你。

如果你定义你的视图助手:

public function pickerElement( $name, $value=null, $attribs=null, $options=null ) { }

然后在你的实际表单元素中,你可以这样定义:

class My_Form_Element_Picker extends Zend_Form_Element_Xhtml {

 public $helper = 'pickerElement';
 public $options = array();

 public function setFoobar( $foobar ) {
  $this->options['foobar'] = $foobar;
 }
}

您会发现选项会传递给视图助手并可以使用。

此代码来自内存,所以请原谅任何错误,这种方法绝对适用于我。