Есть ли способ добавить знак "$" прямо перед <input>
для элемента Zend_Form? (конечно, было бы здорово использовать стандартные ZF).
РЕДАКТИРОВАТЬ : например, если HTML-код, сгенерированный Zend_Form для элемента cost
, выглядит примерно так: (очень упрощенно)
<label>Cost:</label>
<input type="text" name="cost" />
Я бы хотел, чтобы он вывел это:
<label>Cost:</label>
$ <input type="text" name="cost" />
3 ответа
Вы можете использовать декоратор callback. чтобы поместить любой HTML-код в свои элементы:
Например, в вашем случае я мог бы сделать:
$el1 = $this->createElement('text', 'el1')->setLabel('Cost:');
// Anonymous function that will generate your custom html (needs PHP 5.3).
// For older PHP there are other ways of making anonymous functions.
$myHtml = function($content, $element, array $options) {
return '$';
};
$el1->setDecorators(array(
'ViewHelper',
'Errors',
array('Callback', array('callback' => $myHtml, 'placement' => 'PREPEND')),
'Label'
));
В результате должен получиться следующий html-код:
<label for="el1" class="optional">Cost:</label>
$
<input type="text" name="el1" id="el1" value="" />
Надеюсь, это будет полезно или, по крайней мере, укажет вам правильное направление.
Используя декоратор AnyMarkup, вы можете сделать следующее:
$element->setDecorators(array(
'ViewHelper',
array('AnyMarkup', array('markup' => '$', 'placement' => 'prepend')),
// And any other decorators, like Label, Description, Errors, and
// other wrapping like td, tr, etc.
));
Как обычно, не забудьте зарегистрировать пространство имен для декоратора с формой. Итак, если вы используете класс, названный в связанном фрагменте My_Decorator_AnyMarkup
, расположенный в файле My/Decorator/AnyMarkup.php
по пути включения, вам понадобится что-то вроде:
$form->addElementPrefixPath('My_Decorator_', 'My/Decorator', 'decorator');
Вы можете добавить это как описание
$this->createElement('text', 'cost')
->setLabel('Cost:')
->setDescription('$');
А затем правильно настройте декораторы элемента.
< Сильный > Upd :
Предлагаемые декораторы элемента:
array(
'ViewHelper',
array('Description', array('placement' => Zend_Form_Decorator_Abstract::PREPEND, 'tag' => 'em'))
);
Обратите внимание на вариант размещения.
<input>
?
Похожие вопросы
Связанные вопросы
Новые вопросы
zend-framework
Zend Framework - это объектно-ориентированная среда веб-приложений с открытым исходным кодом, реализованная в PHP 7.1 и лицензированная по новой лицензии BSD. Zend Framework был заархивирован 1 января 2020 года одновременно с миграцией и запуском Laminas Project, официального продолжения под управлением The Linux Foundation.