Zend_Form, как поставить <a>за вводимым текстом? - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь поместить некоторую HTML-ссылку позади входного текста, и я пытаюсь сделать что-то вроде этого:

$aElements[$iKey] = $oName = new Zend_Form_Element_Text($aValue['newsletter_question_answer_id']);
$oName->addDecorator('HtmlTag', array(
                        'tag' => 'a',
                        'href'=>'http://some_url.html',
                        'placement' => Zend_Form_Decorator_Abstract::APPEND
                    ));

и мой вопрос, как я могу поместить что-то между <a> и </a>?

С наилучшими пожеланиями

1 Ответ

4 голосов
/ 22 марта 2012

Если вы не хотите писать собственный декоратор, вы должны использовать обратный вызов:

$element->addDecorator('Callback', array(
    'callback'  => function($content, $element, $options) { 
        Zend_Debug::dump($content, 'content'); //elements decorated so far
        Zend_Debug::dump($element, 'element'); //current element
        Zend_Debug::dump($options, 'options'); //other options

        return "<a href=\"{$options['href']}\">{$options['label']}</a>";
    },
    'option' => 'value', //everything but 'callback' and 'placement' gets 
                         //passed to callback as option
    'href'  => 'http://example.com',
    'label' => 'Link!',
    'placement' => Zend_Form_Decorator_Abstract::APPEND
));

Конечно, это обратный вызов в стиле php5.3, но вы также можете использовать oldstyle.

...