Я подготовил пример, который должен помочь в решении вашей проблемы.Вот оно:
$form = new Zend_Form;
$form->removeDecorator('htmlTag');
$form->setAction('/index/login')
->setMethod('post')
->setAttrib('id', 'login_form');
$username = $form->createElement('text', 'username');
$username->addValidator('alnum')
->setRequired(TRUE)
->setLabel('Username')
->setAttrib('class', 'login_input');
// anonymous function that will generate your image tag
$makeImg = function($content, $element, array $options) {
return '<img src="/images/' . $options['img'] . '" class="' . $options['class'] . ' " alt=""/> ';
};
$username->setDecorators(array(
'ViewHelper',
'Errors',
array('Label', array('class' => 'login_label')),
array('Callback',
array(
'callback' => $makeImg,
'img' => 'user_icon.png',
'class' => 'login_icon',
'placement' => 'PREPEND'
)
),
array('HtmlTag', array('tag' => null, 'class' => 'input_row')),
));
$form->addElement($username);
$submit = $form->createElement('submit', 'login', array(
'label' => 'Login',
'class' => 'login_submit'
)
);
$submit->setDecorators(array(
'ViewHelper',
'Errors',
array('HtmlTag', array('tag' => null, 'class' => 'input_row')),
));
$form->addElement($submit);
Форма генерирует следующий html (я не сгенерировал поле пароля, поскольку ваш код Zend_Form его не содержит):
<form id="login_form" enctype="application/x-www-form-urlencoded" action="/index/login" method="post">
<div class="input_row">
<img src="/images/user_icon.png" class="login_icon " alt="">
<label for="username" class="login_label required">Username</label>
<input type="text" name="username" id="username" value="" class="login_input">
</div>
<div class="input_row">
<input type="submit" name="login" id="login" value="Login" class="login_submit">
</div>
</form>
Стоит отметить, чтоЯ использовал Callback декоратор.С помощью этого декоратора вы можете вызывать любую функцию, которая может использоваться для добавления пользовательских HTML в ваши формы.В этом примере я сделал анонимную функцию, которую я назначил переменной $makeImg
(для этого вам нужен PHP 5.3, но в более старых версиях PHP вы могли бы сделать это также, но с использованием, например, функции create_function).Эта переменная $makeImg
является моим обратным вызовом.Как видно, функция генерирует ваш img
html-тег.
Надеюсь, это будет вам полезно.