Примечания к элементу формы Zend

Я создал элемент формы zend для содержимого html (общие примечания).

class Sistema_Form_Note extends Zend_Form_Element_Xhtml {

    public $helper = 'formNote';

    public function isValid($value){
        return true;
    }

}

Он работает нормально, но работает как поле, и когда я вставляю данные сообщения в свою базу данных, появляется элемент заметки индекса.

POST array('name' => 'John'
  'note1' => ...); 

Как я мог удалить его, не используя метод removeElement() на контроллере? Есть ли способ указать в классе, что это не должно быть «поле базы данных»?

Спасибо


person dextervip    schedule 12.09.2011    source источник


Ответы (3)


Я понял, глядя, как удаляется кнопка отправки, это можно решить, переопределив метод contruct и передав параметр игнорирования как true.

class Sistema_Form_Note extends Zend_Form_Element_Xhtml {

    public $helper = 'formNote';

    public function __construct($spec, $options = null)
    {
       if (is_string($spec) && ((null !== $options) && is_string($options))) {
            $options = array('label' => $options);
       }

       if (!isset($options['ignore'])) {
            $options['ignore'] = true;
       }

       parent::__construct($spec, $options);
    }

    public function isValid($value){
       return true;
    }

}
person dextervip    schedule 12.09.2011

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

class My_Form_Element_Note extends Zend_Form_Element_Xhtml
{
    public $helper = 'formNote';

    protected $_ignore = true;

    public function setValue($value)
    {
        if (null === $this->_value) {
            parent::setValue($value);
        }
        return $this;
    }
}
person Phil    schedule 12.09.2011

Мне как раз помогло:

class App_Form_Element_Note расширяет Zend_Form_Element_Xhtml {

public $helper = 'formHtml';

public function __construct($spec, $options = null) {

     parent::__construct($spec, $options);
     $this->setIgnore(true);
}

public function isValid($value){
      return true;
}

}

Переопределение функции IsValid привело к тому, что примечание появляется, когда действует валидатор.

person Ivan Joaquim    schedule 14.03.2013