Zend_Form_Decorator_File как - PullRequest
       6

Zend_Form_Decorator_File как

1 голос
/ 02 апреля 2012

Я новичок в Zend. У меня есть небольшой веб-сайт, на котором я могу писать статьи для сообщества пользователей. К каждой статье пользователь может прикрепить один или несколько файлов. Я сделал форму, чтобы администратор мог обновлять статью.

Я могу отобразить список входных файлов для каждого файла, который был прикреплен к статье.

Теперь я хочу отобразить ссылку на файл справа от моего элемента управления входным файлом.

Я думаю, что мне нужно использовать декоратор, но мне трудно разобраться, как заставить его работать.

Помогите пожалуйста, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2012

Вот простой способ использования View Helper в сочетании с ViewHelper Decorator для добавления ссылки на ваш элемент File.

Во-первых, если у вас еще не настроен вспомогательный путь, добавьте его в application.ini:

resources.view.helperPath.My_View_Helper = "My/View/Helper/"

Затем в вашем пути (папка library отлично работает) создайте дерево каталогов My/View/Helper.

Создайте 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));
    }
}

Теперь, когда вы создаете свой элемент, все, что вам нужно сделать, это добавить декоратор ViewHelper и передать некоторые параметры ссылки.

$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',
    ),
));

Теперь, если вы используете этот стек декораторов для своих файловых элементов и предоставите элементу linkOpts, он будет отображать ссылку после ввода File. Если не указан linkOpts или элемент href или text, то ссылка после элемента File не будет выводиться.

Надеюсь, это поможет.

0 голосов
/ 02 апреля 2012

Роб Аллен написал отличную статью об использовании Zend_Form и приводит хороший пример декоратора.Может быть, это поможет.

http://akrabat.com/zend-framework/simple-zend_form-example/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...