Bonjour, j'ai une Api pour faire un formulaire et à chaque nom de champ elle associe la valeur correspondante au champ grâce à cette fonction :
public function add(Field $field)
{
// On récupère le nom du champ.
$attr = $field->name();
$field->setValue($this->entity->$attr()); // On assigne la valeur correspondante au champ.
$this->fields] = $field; // On ajoute le champ passé en argument à la liste des champs.
return $this;
// On récupère le nom du champ.
}
Pour le formulaire cela ressemble à ceci
QuestionFormBuilder
<?php
namespace Library\FormBuilder;
class QuestionsFormBuilder extends \Library\FormBuilder
{
public function build()
{
$this->form->add(new \Library\PropositionsField(array(
'label' => 'Propositions',
'name' => 'reponse',
'choix' => 'choix1',
'validators' => array(
new \Library\NotNullValidator('Merci de spécifier votre choix'),
),
)))
->add(new \Library\PropositionsField(array(
'name' => 'reponse',
'choix' => 'choix2',
'validators' => array(
new \Library\NotNullValidator('Merci de spécifier votre choix'),
),
)))
->add(new \Library\PropositionsField(array(
'name' => 'reponse',
'choix' => 'choix3',
'validators' => array(
new \Library\NotNullValidator('Merci de spécifier votre choix'),
),
)));
}
}
en l’occurrence ici à chaque champ name, la valeur réponse
Comme vous pouvez le voir il y a un champs choix en dessous de name et j'aimerai associer de la même manière la valeur du champ choix
Comment dois-je procéder ?
Merci de m'éclairer
Salut,
Je ne suis pas sûr d'avoir bien compris ce que tu voulais faire, mais ça ressemblerait peut-être à quelque chose comme ça :
public function add(Field $field)
{
// On récupère le nom du champ.
$attr = $field->name();
$field->setValue($this->entity->$attr()); // On assigne la valeur correspondante au champ.
// On récupère le choix
$choix = $field->choix;
$field->setChoix($this->entity->$choix); // je suis pas sûr de la valeur entre parenthèses je ne vois pas ton code en entier
$this->fields] = $field; // On ajoute le champ passé en argument à la liste des champs.
return $this;
// On récupère le nom du champ.
}
// Et donc sur le même modèle que la fonction setValue, il te faut une fonction setChoix
public function setChoix($args) {
// et là je sais pas ce que tu comptes faire avec
}
Après je ne sais pas comment fonctionne ta fonction setValue(), peut-être qu'elle peut gérer elle même si l'attribut à ajouter est un name, un choix au autre chose.
J'espère que ça t'éclairera ;)
PS : quand tu accèdes à une propriété qui n'est pas une méthode d'un objet, inutile de mettre des parenthèses, tu peux écrire $object->property pour les propriétés et $object->method() pour les méthodes.