所以我自己创建了一个自定义表单元素,它有一个自定义视图助手。现在我希望能够在此表单元素上设置某些参数/变量,并能够在元素的视图助手中访问它们。我怎么能这样做?
以下是我所谈论的一个例子:
将元素添加到表单中:
$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';
}
}
答案 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;
}
}
您会发现选项会传递给视图助手并可以使用。
此代码来自内存,所以请原谅任何错误,这种方法绝对适用于我。