如何为输入类型文件元素设置装饰器?

时间:2011-08-22 07:25:33

标签: zend-framework zend-form

我有以下代码, 在myClass下,我设置了decorators变量,

 public $testDecorators = array(
    'ViewHelper',
    'Errors',
    array('Description', array('escape' => false, 'tag' => '', 'placement' => 'append')),
    array(array('data' => 'HtmlTag'), array('tag' => 'div', 'class' => 'itemR')),
    array('Label', array('tag' => 'div', 'class' => 'itemL')
    ),
    array('HtmlTag', array('tag' => 'div', 'class' => 'itemcontent'))
);

在CreateForm函数下,

...

    $cover_image = new Zend_Form_Element_File('cover_test', array(
      'label' => 'Cover Test:',
      'value'   => '',
      'class' => 'test',
      'tabindex' => '5',
      'required' => false,
      'filters' => array('StringTrim'),
          'decorators' => $this->testDecorators,
    ));

...

当我使用这个装饰器时,我的表单中没有显示任何内容,如果使用默认的dd标签评论'decorators' => $this->testDecorators,表单正常,请帮助我

2 个答案:

答案 0 :(得分:4)

文件元素必须包含'File'装饰器,通常代替ViewHelper装饰器。所以试试这个:

public $testDecorators = array(
    'File',
    'Errors',
    array('Description', array('escape' => false, 'tag' => '', 'placement' => 'append')),
    array(array('data' => 'HtmlTag'), array('tag' => 'div', 'class' => 'itemR')),
    array('Label', array('tag' => 'div', 'class' => 'itemL'),
    array('HtmlTag', array('tag' => 'div', 'class' => 'itemcontent'))
);

答案 1 :(得分:1)

您是否看过$cover_image->getDecorators()显示的内容?

另外,这个中间是否正确:

array(array('data' => 'HtmlTag'), array('tag' => 'div', 'class' => 'itemR')),

不应该是:

array('HtmlTag', array('tag' => 'div', 'class' => 'itemR')),

最后一个是?