2015-01-14 1 views
0

Я связывающим форму с использованием доктрины Entity:ZF2 Неактивированные форму, связанную с сущностью

$form->bind($user); 

Форма с использованием Fieldsets. Тогда я пытаюсь приложить подтверждение к форме:

$form->setInputFilter($userFormValidation->getInputFilter()); 

Где валидация выглядит как:

namespace User\Form; 

use Zend\InputFilter\Factory as InputFactory; 
use Zend\InputFilter\InputFilter; 
use Zend\InputFilter\InputFilterAwareInterface; 
use Zend\InputFilter\InputFilterInterface; 

class UserFormValidation implements InputFilterAwareInterface 
{ 

    protected $inputFilter;      // <-- Add this variable 


    // Add content to these methods: 
    public function setInputFilter(InputFilterInterface $inputFilter) 
    { 
     throw new \Exception("Not used"); 
    } 

    public function getInputFilter() 
    { 
     if (!$this->inputFilter) { 
      $inputFilter = new InputFilter(); 
      $factory  = new InputFactory(); 

      $inputFilter->add($factory->createInput(array(
       'name'  => 'input-username', 
       'required' => true, 
       'filters' => array(
        array('name' => 'StripTags'), 
        array('name' => 'StringTrim'), 
       ), 
       'validators' => array(
        array(
         'name' => 'StringLength', 
         'options' => array(
          'encoding' => 'UTF-8', 
          'min'  => 10, 
          'max'  => 50, 
         ), 
        ), 
       ), 
      ))); 

      $this->inputFilter = $inputFilter; 
     } 

     return $this->inputFilter; 
    } 
} 

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

Кто-нибудь сталкивался с этой проблемой?

+0

, пожалуйста, покажите код, где выполняется фактическая привязка и проверка. – NDM

+0

Вы делаете '$ form-> isValid()' где угодно? – developer10

ответ

0

Спасибо, ребята, я исправил проблему. Проблема была вызвана использованием

$form->setInputFilter() 

Функция с формой, которая имеет вложенные поля. В классе, который расширяет Fieldset, есть эта функция:

class UserFieldset extends Fieldset 
{ 
    ... 
    public function getInputFilterSpecification() 
    { 
     return [ 
      'field-name' => [ 
      ... 
      ], 
     ] 
    } 
} 

Эта реализация исправила мои проблемы.

 Смежные вопросы

  • Нет связанных вопросов^_^