2010-09-22 50 views
1

因此,我创建了自己的自定义窗体元素,它具有自定义视图助手。现在我想能够在这个表单元素上设置特定的参数/变量,并且能够在元素的视图助手中访问它们。我怎样才能做到这一点?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'; 
    } 
} 

回答

5

T这里是视图助手的第四个可选参数,它可能会为你做出诀窍。

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

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; 
} 
} 

你会发现,这些选项将被传入查看帮手,可以使用。

此代码是从内存中请原谅任何错误,但这种方法绝对适用于我。

+0

你的记忆是否正确。 =] – Andrew 2010-09-28 18:11:06

相关问题