Как получить метки элементов формы в теге <label> - PullRequest
0 голосов
/ 17 августа 2011

Я создаю элементы флажка в Zend Form, как это:

$element = $this->CreateElement('checkbox', 'CheckIt');
$element->setLabel('Check It');
$elements[] = $element;

Когда я получаю ярлык вот так:

echo $this->element->getElement("CheckIt")->getLabel();

Это выводит:

Check It

Но я хочу следующий вывод:

<label for='CheckIt'>Check It</label>

Есть ли какая-либо опция в функции getLabel () или есть какая-либо другая функция для достижения этой цели.

Спасибо

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

renderLabel () </p> <pre><code><?php echo $this->form->getElement("CheckIt")->renderLabel(); ?>

сделать этот ярлык

1 голос
/ 17 августа 2011

В вашем вопросе есть концептуальное недоразумение: getLabel() - это простой метод получения свойства объекта.

$element; // is a Zend_Element object
$label = $element->getLabel(); // returns the value of the label property and not a HTML string

Если вы хотите вывод HTML, вы должны вызвать render() для объекта, но это отразит всю форму, а не только значение метки.Вы можете отключить декораторы для элемента, но затем вы снова включите их при отображении самой формы.

Кроме того, в вашем вопросе есть формальная ошибка.Это либо

$element->getLabel();
// or once you have added the element to the form
$this->getElement('CheckIt')->getLabel();
1 голос
/ 17 августа 2011

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

это один из моих классов, вы можете легко адаптировать его для своих нужд

<?php
class My_Label extends Zend_Form_Decorator_Abstract
{
    protected $_format = '<td class="nome_campo"><label for="%s">%s%s</label></td>';

    public function render($content)
    {
        $element = $this->getElement();

        $id      = htmlentities($element->getId(), ENT_QUOTES, "UTF-8");
        $label   = htmlentities($element->getLabel(), ENT_QUOTES, "UTF-8");
        if ($element->isRequired())
            $asterisk = '<span class="required">*</span> ';
        else
            $asterisk = '';

        $markup = sprintf($this->_format, $id, $asterisk, $label);


        //per avere valid xhtml/html
        if (stripos($element->getType(), 'radio') !== false )//Zend_Form_Element_Radio
        {
            $this->_format = '<td class="nome_campo">%s%s</td>';
            $markup = sprintf($this->_format, $asterisk, $label);
        }


        $placement = $this->getPlacement();
        $separator = $this->getSeparator();
        switch ($placement) {
            case self::APPEND:
                return $content . $separator . $markup;
            case self::PREPEND:
            default:
                return $markup . $separator . $content;
        }
    }
}
...