заполнитель текста в элементе текста Zend - PullRequest
9 голосов
/ 04 июля 2011

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

мы можем добиться этого в HTML с помощью следующего кода:

<input type="text" placeholder="Search" name="q" />

Мой вопрос как добавить атрибут заполнителя в поле ввода с помощью формы Zend?

Ответы [ 5 ]

20 голосов
/ 05 июля 2011

Уже упоминалось для использования:

$element->setAttrib('placeholder', 'Search');

Вы также можете использовать его при расширении Zend_Form

$element = $this->createElement('text', 'q', array(
           'placeholder' => 'Search',
           'label'       => 'Search'
));

Или внутри представления, используя Zend_View_Helper_FormText

echo $this->formText('q',null, array('placeholder' => 'Search'));
3 голосов
/ 04 июля 2011

В объектах Zend_Form_Element вы можете указать атрибуты:

$element->setAttrib('placeholder', 'Search');
3 голосов
/ 04 июля 2011

Я думаю, что вы можете вызывать методAoundAttrib () для вашего элемента следующим образом, когда определяете элементы

    $element->setAttrib ( 'placeholder', 'search' );
2 голосов
/ 17 июня 2014

Вот обновление для ZF2.
Вам придется использовать это в своей Zend \ Form \ Form:

$this->add(
    [
        'name'    => 'q',
        'type'    => 'Text',
        'options' => [
            'label' => 'Search',
        ],
        'attributes' => [
            'placeholder' => 'Search',
        ],
    ]
);

setAttrib не существует, но setAttribute делает:

$element->setAttribute('placeholder', 'Search');

Но в FormText view-helper вы больше не можете добавлять опции, поэтому вам нужно сделать:

$element = $form->get('q');
$saved_placeholder = $element->getAttribute('placeholder'); // works even if not defined
$element->setAttribute('placeholder', 'Search');
echo $this->formText($element);
$element->setAttribute('placeholder', $saved_placeholder);

Я знаю, это уродливый хак!

0 голосов
/ 01 декабря 2018

Мое решение с использованием jQuery

var elements = ['email', 'password', 'password_confirm'];
$j(elements).each(function(i, elem){
    $j('#' + elem).attr('placeholder', $j('#' + elem + '-label label').text());
    $j('#' + elem + '-label').hide();
    if ($j('#' + elem).hasClass('required-entry')) $j('#' + elem).attr('placeholder', $j('#' + elem).attr('placeholder') + ' *');
});
...