Bonjour,
J'ai une vue dans laquelle s'affiche un tableau listant tous les objets (triés) de ma classe adherent.
Je voudrais égalementy afficher un formulaire de sélection qui proposerait un champ 'choices' contenant la liste des noms concaténés aux prénoms de chaque adhérent, ainsi que deux boutons 'submit': modifier qui redirige vers mon formulaire de modification, et 'supprimer' qui supprime l'objet de la base.

Alors mon premier problème, c'est que je n'arrive pas à concaténer le nom et le prénom, car il me demande un attribut dans le property.
Voici on code (au niveau du controller, à cause du problème que je décris ensuite):
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
  // crée un formulaire de sélection
        $builder= $this->createFormBuilder();     
        $builder->add('Nom', 'entity', array(
            'class' => 'BAMAdherentBundle:Adherent',
            'property' => 'nom',
            'choices' => $adherents,
            'expanded'=> false,
            'multiple'=>false,)); 
        $form=$builder->getForm();

Le deuxième problème c'est pour créer la classe form.
J'ai un problème pour passer mon tableau d'adherents en paramètres et le récupérer dans ma fonction pour l'inclure dans le 'choices'. Il me met l'erreur suivante:
ContextErrorException: Warning: spl_object_hash() expects parameter 1 to be object, null given in /var/www/BAM/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php line 90
Voici ma classe:

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
namespace BAM\AdherentBundle\Form;
 
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
 
 
class ChoixAdherentType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('Nom', 'entity', array(
            'class' => 'BAMAdherentBundle:Adherent',
            'property' => 'nom',
            'choices' => $options,
            'expanded'=> false,
            'multiple'=>false,));
    }
 
    public function getName()
    {
        return 'bam_adherentbundle_choixadherent';
    }
 
        /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'BAM\AdherentBundle\Entity\Adherent'
        ));
    }
 
}

Et mon dernier problème c'est pour récupérer l'action du clic sur un des deux boutons. J'ai regardé sur la doc et il me semble avoir suivi l'exemple, mais apparemment non... Puisqu'il me revoit toujours à la homepage (sur laquelle se trouve le formulaire) que je clique sur n'importe quel bouton.
Voici mon code:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
        // récupération du résultat du formulaire
        $request = $this->get('request');
        if($request->getMethod() == 'POST' && $form->isValid())
        { 
            if($form->get('modifier')->isClicked())
            {
                return $this->redirect($this->generateUrl('bam_adherent_ajout'));
            }
            return $this->redirect($this->generateUrl('bam_adherent_ajout')); 
        }

Merci de votre aide.