gpt4 book ai didi

zend-framework - Zend 文件上传和元素装饰器

转载 作者:行者123 更新时间:2023-12-04 14:04:54 29 4
gpt4 key购买 nike

我有问题,以下 Zend 表单会引发错误。
问题是"file"元素和使用 setElementDecorators。

    class Products_AddForm extends Zend_Form
{
function init() {

// other form elements...

$uploadElement = new Zend_Form_Element_File('Excel');
$uploadElement->setLabel('Excel');
$this->addElement($uploadElement);

$this->setElementDecorators(array(
'ViewHelper',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array('Label', array('tag' => 'th')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));



}
}

这会引发错误。
(Warning: Exception caught by form: No file decorator found... unable to render file element Stack Trace: #0 ) 

添加 $uploadElement->addDecorator('File');末后 SetElementDecorators会起作用,但这会给我两次文件元素!

请问有人可以帮忙吗?

TIA
马特

最佳答案

File 元素需要它自己的装饰器 - Zend_Form_Decorator_File。

$this->setElementDecorators(array(
'File',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array('Label', array('tag' => 'th')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
));

[编辑]

刚刚注意到您还在使用其他表单元素。

在您的原始代码之后,添加:
$this->getElement('Excel')->setDecorators(
array(
'File',
'Errors',
array(array('data' => 'HtmlTag'), array('tag' => 'td')),
array('Label', array('tag' => 'th')),
array(array('row' => 'HtmlTag'), array('tag' => 'tr'))
)
);

这样,ViewHelper 被添加到所有其他元素,而您的 File 元素使用 File 代替。

关于zend-framework - Zend 文件上传和元素装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7580839/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com