Zend Form Элемент Примечания - PullRequest
       23

Zend Form Элемент Примечания

1 голос
/ 12 сентября 2011

Я создал элемент формы 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() на контроллере? Есть ли какой-нибудь способ сказать в классе, что это не должно быть "поле базы данных"?

Спасибо

Ответы [ 3 ]

4 голосов
/ 12 сентября 2011

Я разобрался, глядя, как убирается кнопка отправки, это можно решить, переопределив метод 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;
    }

}
2 голосов
/ 12 сентября 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;
    }
}
0 голосов
/ 14 марта 2013

Мне только это помогло:

class App_Form_Element_Note extends 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' заставило заметку появиться, когдавалидатор действует.

...