php Zend Framework - Смена декоратора, только если он еще не был изменен - PullRequest
0 голосов
/ 16 сентября 2011

Я на самом деле ищу хороший способ иметь универсальные декораторы для всех моих элементов форм, но в то же время я могу очень точно изменять некоторые декораторы некоторых элементов.

Скажем, я хочу, чтобы у всех моих элементов были новые общие декораторы. Я бы сделал это в методе addElement моего родового класса родовой формы. Например, в My_Form расширение класса Zend_Form, которое будет расширено My_Form_User, содержащим объявления фактических элементов, у меня будет что-то вроде:

public function addElement($element, $name = null, $options = null)
{
    parent::addElement($element, $name, $options);

    if (! is_object($element)) {
        $element = $this -> getElement($name);
    }

    if (is_object($element))
    {
        $element -> clearDecorators();
        $element -> addDecorators($this -> elementDecorators);
    }

    return $this;
}

Теперь у меня очень специфические потребности в некоторых элементах некоторых форм. Поэтому я устанавливаю эти декораторы, когда создаю элемент (в My_Form_User классе), но, конечно, когда я добавляю их в форму с addElement, я не могу найти способ проверить, если 1 декоратор (ViewHelper или Description или Label ...) был изменен, так что я не стираю его с общим.

Есть идеи? Спасибо!

1 Ответ

0 голосов
/ 16 сентября 2011

Это немного коротко, но ...

  • getDecorator ($ название)
  • getDecorators ()
  • removeDecorator ($ название)

... возможно, это уже помогает.

...