Zend framework Zend_Form_Decorator_文件如何

Zend framework Zend_Form_Decorator_文件如何,zend-framework,Zend Framework,我是Zend的初学者。我有一个小网站,我可以在其中为一个用户社区写文章。对于每篇文章,用户可以附加一个或多个文件。我制作了一个表单,以便管理员能够更新文章 我可以显示文章附带的每个文件的输入文件列表 现在我想在输入文件控件的右侧显示一个指向该文件的链接 我想我需要使用decorator,但我很难找到如何让它工作 这方面有什么帮助吗?Rob Allen写了一篇关于使用Zend_表单的好文章,并介绍了一个很好的decorator示例。也许这会有帮助 这里有一个简单的方法,可以将a与结合使用,将链接附

我是Zend的初学者。我有一个小网站,我可以在其中为一个用户社区写文章。对于每篇文章,用户可以附加一个或多个文件。我制作了一个表单,以便管理员能够更新文章

我可以显示文章附带的每个文件的输入文件列表

现在我想在输入文件控件的右侧显示一个指向该文件的链接

我想我需要使用decorator,但我很难找到如何让它工作


这方面有什么帮助吗?

Rob Allen写了一篇关于使用Zend_表单的好文章,并介绍了一个很好的decorator示例。也许这会有帮助


这里有一个简单的方法,可以将a与结合使用,将链接附加到File元素

首先,如果尚未设置助手路径,请将其添加到
application.ini

resources.view.helperPath.My_View_Helper = "My/View/Helper/"
然后在您的路径中(
library
文件夹非常有用),创建目录树
My/View/Helper

在上面的目录中创建视图帮助器,例如我将其称为
Link
,因此创建
My/View/Helper/Link.php

Link.php的内容是:

<?php

class My_View_Helper_Link extends Zend_View_Helper_Abstract
{
    public function link($name, $value, $attribs, $elOptions)
    {
        if (!isset($attribs['linkOpts']) || !is_array($attribs['linkOpts']))
            return '';

        $linkOpts = $attribs['linkOpts'];

        $link = (isset($linkOpts['href'])) ? $linkOpts['href'] : '';
        $text = (isset($linkOpts['text'])) ? $linkOpts['text'] : '';

        if ($link == '' || $text == '') return '';

        return sprintf('<a href="%s">%s</a>', $link, htmlspecialchars($text));
    }
}
现在,如果您对文件元素使用该装饰器堆栈,并向元素提供
linkOpts
,它将在文件输入后呈现链接。如果未提供
linkOpts
,或
href
text
元素,则在File元素之后不会输出任何链接

希望有帮助

$fileDecorators = array(
    'File',
    array('ViewHelper', array('helper' => 'link')), // Add ViewHelper decorator telling it to use our Link helper
    'Errors',
    array('Description', array('tag' => 'p', 'class' => 'description')),
    array('HtmlTag',     array('class' => 'form-div')),
    array('Label',       array('class' => 'form-label', 'requiredSuffix' => '*'))
);

$this->addElement('file', 'file1', array(
    'label'      => 'File Upload:',
    'required'   => false,
    'decorators' => $fileDecorators,
    'validators' => array(
        /* validators here */
     ),
    'linkOpts' => array('href' => 'http://site.com/page/link',
                        'text' => 'This is the link text',
    ),
));