/** {@inheritdoc} */ public function init() { parent::init(); $config = $this->getOption('config'); $mergeCustomFields = new Element\Checkbox('mergeCustomFields'); $mergeCustomFields->setLabel('Merge user supplied information'); $mergeCustomFields->setChecked($config->defaultMergeCustomFields); $this->add($mergeCustomFields); $mergeGroups = new Element\Checkbox('mergeGroups'); $mergeGroups->setLabel('Merge manual group assignments'); $mergeGroups->setChecked($config->defaultMergeGroups); $this->add($mergeGroups); $mergePackages = new Element\Checkbox('mergePackages'); $mergePackages->setLabel('Merge missing package assignments'); $mergePackages->setChecked($config->defaultMergePackages); $this->add($mergePackages); $submit = new \Library\Form\Element\Submit('submit'); $submit->setLabel('Merge selected clients'); $this->add($submit); // Checkboxes for "clients[]" are generated manually, without // \Zend\Form\Element. Define an input filter to have them processed. $arrayCount = new \Zend\Validator\Callback(); $arrayCount->setCallback(array($this, 'validateArrayCount'))->setMessage('At least 2 different clients have to be selected', \Zend\Validator\Callback::INVALID_VALUE); $inputFilter = new \Zend\InputFilter\InputFilter(); $inputFilter->add(array('name' => 'clients', 'required' => true, 'continue_if_empty' => true, 'filters' => array(array($this, 'clientsFilter')), 'validators' => array($arrayCount, new \Zend\Validator\Explode(array('validator' => new \Zend\Validator\Digits()))), 'error_message' => $arrayCount->getDefaultTranslator()->translate($arrayCount->getMessageTemplates()[\Zend\Validator\Callback::INVALID_VALUE]))); $this->setInputFilter($inputFilter); }