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

And*_*rew 1 zend-framework

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

这是我所说的一个例子:

将元素添加到表单:

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

表单元素:

class My_Form_Element_Picker extends Zend_Form_Element_Xhtml
{
    public $helper = 'pickerElement';
}
Run Code Online (Sandbox Code Playgroud)

查看助手:

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';
    }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ler 5

视图助手有第四个可选参数,可以为您提供帮助.

如果您像这样定义视图助手:

public function pickerElement( $name, $value=null, $attribs=null, $options=null ) { }
Run Code Online (Sandbox Code Playgroud)

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

class My_Form_Element_Picker extends Zend_Form_Element_Xhtml {

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

 public function setFoobar( $foobar ) {
  $this->options['foobar'] = $foobar;
 }
}
Run Code Online (Sandbox Code Playgroud)

您会发现选项被传递到视图助手中并可以使用.

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