代码之家  ›  专栏  ›  技术社区  ›  Andrew

Zend框架:如何将变量传递给自定义表单元素的视图帮助器

  •  1
  • Andrew  · 技术社区  · 14 年前

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

    以下是我所说的一个例子:

    将元素添加到表单:

    $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 回复  |  直到 14 年前
        1
  •  5
  •   Matt Wheeler    14 年前

    视图帮助器有第四个可选参数,可以为您提供技巧。

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

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

    您将发现这些选项被传递到视图帮助器中,并且可以使用。

    这个代码是从记忆中产生的,所以请原谅任何错误,这个方法当然适用于我。