Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Jan 8, 2020. It is now read-only.
This repository was archived by the owner on Jan 8, 2020. It is now read-only.

Filters and validators are added twice when using fieldsets #5166

@Nowicki

Description

@Nowicki

Fieldset

class TestFieldset extends Fieldset implements
    InputFilterProviderInterface
{
    public function __construct($name)
    {
        parent::__construct($name);

        $this->add(array(
            'type' => 'text',
            'name' => 'test'
        ));
    }

    public function getInputFilterSpecification() {
        return array(
            'test' => array(
                'filters' => array(
                    array('name' => 'StringTrim')
                ),
                'validators' => array(
                    array('name' => 'NotEmpty')
                )
            )
        );
    } 
}

Form

class TestForm extends Form
{
    public function __construct($name = null, $options = array()) {
        parent::__construct($name, $options);

        $fieldset = new TestFieldset('test-fieldset');

        $this->add($fieldset);
    }
}

Controller action

public function indexAction()
{
    $form = new \CRM\Form\TestForm;    
    $form->setData(array('test-fieldset' => array('test' => 'test value')));
    $form->isValid();

    $inputFilter = $form->getInputFilter()
            ->get('test-fieldset')
            ->get('test');

    $filters = $inputFilter->getFilterChain()
        ->getFilters();

    $validators = $inputFilter->getValidatorChain()
        ->getValidators();

    var_dump($filters);
    var_dump($validators);
}

Result

object(Zend\Stdlib\PriorityQueue)[678]
  protected 'queueClass' => string 'Zend\Stdlib\SplPriorityQueue' (length=28)
  protected 'items' => 
    array (size=2)
      0 => 
        array (size=2)
          'data' => 
            object(Zend\Filter\StringTrim)[682]
              ...
          'priority' => int 1000
      1 => 
        array (size=2)
          'data' => 
            object(Zend\Filter\StringTrim)[693]
              ...
          'priority' => int 1000
  protected 'queue' => 
    object(Zend\Stdlib\SplPriorityQueue)[683]
      protected 'serial' => int 2147483645
array (size=2)
  0 => 
    array (size=2)
      'instance' => 
        object(Zend\Validator\NotEmpty)[686]
          protected 'constants' => 
            array (size=13)
              ...
          protected 'messageTemplates' => 
            array (size=2)
              ...
          protected 'options' => 
            array (size=1)
              ...
          protected 'value' => string 'test value' (length=10)
          protected 'abstractOptions' => 
            array (size=7)
              ...
      'breakChainOnFailure' => boolean false
  1 => 
    array (size=2)
      'instance' => 
        object(Zend\Validator\NotEmpty)[697]
          protected 'constants' => 
            array (size=13)
              ...
          protected 'messageTemplates' => 
            array (size=2)
              ...
          protected 'options' => 
            array (size=1)
              ...
          protected 'value' => string 'test value' (length=10)
          protected 'abstractOptions' => 
            array (size=7)
              ...
      'breakChainOnFailure' => boolean false

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions