Warning: Illegal offset type in formType !

Par emile01, il y a 9 ans


Bonjour,

j'ai un probléme que j'arrive a résoudre.
En effet, j'ai développé une fonction qui permet de réaliser la chaine suivante: A.5 ....A.18

private $this->concat; public function __construct() { $this->concat=$this->calPrefixe(); } public function calPrefixe() { $tab= array(); for ($i=5; $i<=18;$i++) { $tab[$i] ="A.".$i; } return $tab; }

Mon probléme que je sais pas comment ajouter la variable ($b) qui contient la listes des chaînes de caractères dans le 'builder form' comme il montre ce peusodo code:

public function buildForm(FormBuilderInterface $builder, array $options) { $chp= new \Management\ChapitresBundle\Entity\Chapitres(); $b=$chp->getConcat(); // var_dump($b); $builder ->add('prefixe','choice', array('choices'=>array($b => $b))) ; }

Alors j'ai testé la variable $b avec la fonction var_dump() et voilà la résultat :

array(14) { [5]=> string(3) "A.5" [6]=> string(3) "A.6" [7]=> string(3) "A.7" [8]=> string(3) "A.8" [9]=> string(3) "A.9" [10]=> string(4) "A.10" [11]=> string(4) "A.11" [12]=> string(4) "A.12" [13]=> string(4) "A.13" [14]=> string(4) "A.14" [15]=> string(4) "A.15" [16]=> string(4) "A.16" [17]=> string(4) "A.17" [18]=> string(4) "A.18" }

le message d'erreur qui s'affiche lorsque j'actualise ma page:

Warning: Illegal offset type500 Internal Server Error - ContextErrorException *Stack Trace src/Management/ChapitresBundle/Form/ChapitresType.php at line 32 32--> ->add('prefixe','choice', array('choices'=>array($b => $b)))

Merci de m'aider a trouver la bonne solution

2 réponses

SimonAndGarfunkel, il y a 9 ans

Bonjour Emile01,

avec ça c'est mieux ?

$builer->add('prefixe','choice', array('choices'=>$b));

Premier prolème avec votre code actuel:

$builder->add('prefixe','choice', array('choices'=>array($b => $b)));

Vous essayez de créer un tableau avec comme clef un tableau.

Et autre remarque, j'imagine que chaque clef représentera la valeur à stocker (attribut 'value' de la balise 'option' du 'select') ? Dans ce cas, il vous faudra certainement inverser les clefs par les valeurs et les valeurs par les clefs (array_flip)

emile01, il y a 9 ans

Merci beaucoup mon ami le probléme est résolu :)