Je ne suis pas sûr de ce qui se passe. J'utilise Zend Form 2 avec un champ multisélect. Lorsque je soumets le code, les valeurs existent dans la publication. Lorsque j'exécute les valeurs via zend form 2, je n'obtiens aucune erreur de validation mais le champ multiselect est soudainement vide.Zend Form 2 champ multi-sélection est vide après validation
class Form extends \Zend\Form\Form
{
// input filter to set up filters and validators
protected $myInputFilter;
public function __construct()
{
// create the zend form
parent::__construct();
// make it a bootstrap form
$this->setAttribute('class', 'form-horizontal');
$this->setAttribute('role', 'form');
// set the default objects we'll use to build the form validator
$this->myInputFilter = new \Zend\InputFilter\InputFilter();
}
}
class AddPublicationForm extends Form
{
public function __construct()
{
// create the zend form
parent::__construct();
$this->setAttribute('class', 'form-horizontal');
$this->setAttribute('id', 'add-publication-form');
$this->add([
'name' => 'author[]',
'attributes' => [
'class' => 'form-control',
'data-placeholder' => 'Author',
'multiple' => 'multiple',
'placeholder' => 'Author',
],
'required' => false,
'type' => \Zend\Form\Element\Select::class,
'options' => [
'value_options' => [
'check1' => 'check1',
'check2' => 'check2',
],
],
]);
$this->myInputFilter->add([
'filters' => [],
'name' => 'author[]',
'required' => false,
'validators' => [],
]);
// attach validators and filters
$this->setInputFilter($this->myInputFilter);
// prepare the form
$this->prepare();
}
}
Ce sont les objets de formulaire zend que je me sers. J'utilise Slim Framework 2 comme mon backend. Voici l'objet de commande:
public function addAction()
{
$request = $this->app->request;
$form = new Form\AddPublicationForm();
if ($request->isPost()) {
$params = $request->params();
// DUMP 1: exit('<pre>'.print_r($params, true).'</pre>');
$form->setData($params);
if ($form->isValid()) {
$data = $form->getData();
// DUMP 2: exit('<pre>'.print_r($data, true).'</pre>');
}
}
}
DUMP 1:
Array
(
[author] => Array
(
[0] => check1
[1] => check2
)
}
DUMP 2:
Array
(
[author[]] =>
)
Je me rends compte que je pouvais très facilement simplement contourner la validation ici parce que je ne suis pas en utilisant n'importe quel validateur sur ce champ. Je suis plus préoccupé par la cause sous-jacente cependant.
Pourquoi les données d'auteur validées sont-elles vides?
Cela fonctionne! Merci! – lokisapocalypse