Zend Framework 2: Как пометить форму как недействительную?

В ZF1 можно было пометить форму как недействительную, используя код:

$form->fieldname->addError('error message');

Как я могу сделать это в ZF2? Я старался

$form->get('elementName')->setMessages(array('error message'));

но это не делает форму недействительной.

1 ответ

Мне интересно тот же вопрос, и я не знаю, как это сделать легко с помощью стандартных форм Zend 2.

Я понятия не имею, почему нужно было скрывать ручное манипулирование состоянием формы и нарушать очевидную функциональность addError.

Но, может быть, уместно использовать прокси-способ, например так:

  1. Создайте собственную форму базового класса (лучше напишите позже):

    class BasicForm extends Form
    {
        protected _isValid = null;
    
        public function isValid()
        {
            return isset($this->_isValid) ? $this->_isValid : parent::isValid();
        }
    
        public function setValid($value)
        {
            $this->_isValid = isset($value) ? (bool)$value : null;
            return $this;
        }
    
    }
    
  2. Создайте ваши настоящие формы из этого пользовательского класса форм по умолчанию из класса Zend Form:

    class SomeYourForm extends BasicForm
    ...
    

Таким образом, вы сможете установить для этой формы допустимое состояние на true или false, наложив это свойство.

Может быть, это тоже кому-то помогает.

Другие вопросы по тегам