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
Réponse acceptée

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
Auteur

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