0

I want to create a form with a drop-down list and text field. My drop-down list contains values of my Agency Entity and my text field a week number. I want to set default value based on my connected user but I don't know how.

I have modified my entity, my form and my controller:

I have an Entity Week with my Agency relation :

class Week
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 *
 * @ORM\ManyToOne(targetEntity="Agency", inversedBy="week", cascade={"persist"})
 * @ORM\JoinColumn(name="agency_id", referencedColumnName="id")
 */
private $agency;

/**
 * @var integer
 *
 * @ORM\Column(name="week_number", type="integer")
 */
private $week_number;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="week_start", type="datetime")
 */
private $week_start;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="week_end", type="datetime")
 */
private $week_end;

public function getAgency()
{
    return $this->agency;
}
.... public function get.....
}

Then my Agency Entity :

class Agency
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=50)
 */
private $name;

/**
 * @var integer
 *
 * @ORM\Column(name="nb_team", type="integer")
 */
private $nb_team;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="date_creation", type="datetime")
 */
private $date_creation;


/**
 *
 * @ORM\OneToMany(targetEntity="Week", mappedBy="agency", cascade={"persist"})
 */
private $week;

public function .....
}

My Form :

public function buildForm(FormBuilderInterface $builder, array $options)
{        
    $builder->add('agency', 'entity', array(
                    'class' => 'MyProjectBundle:Agency',
                    'property' => 'name',
                   /* 'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
                        return $er->createQueryBuilder('a')->orderBy('a.name', 'ASC');
                    },*/
                    'attr' => array('onchange' => 'javascript:this.form.submit();')
                ))->add('week_number', 'text');
}

And my Controller :

$num_week = 4;
$id = 3;
 $agency_id = $em->getRepository('MyProjectBundle:Agency')->find($id);
    $week = $em->getRepository('MyProjectBundle:Week')->WeekExiste($num_week, $week_start, $agency_id);
    $form2 = $this->createForm(new FormType(), $week);
    if ($request->isMethod('POST')) {
        $form2->bind($request);

        $data = $form2->getData();
        $agency = $data['agency'];
    }
    else {
        $agency = $em->getRepository('MyProjectBundle:Agency')->find($id);
    }

$week return a correct Entity. My form works for the week_number field but my drop down list doesn't select my agency I set in my controller.

Gazelle
  • 11
  • 5
  • 1
    please show me your controller – Dezigo Jan 18 '13 at 11:50
  • Please show me your entity class (Country) – Dezigo Jan 18 '13 at 14:05
  • I have edited my post with all informations. Now I have a Week Entity with a relation with Agency (not Country). I think there is a probleme in my class form to select the good agency I set in my controller. I don't find the problem in your question... – Gazelle Jan 18 '13 at 15:11

1 Answers1

1

I had the same problem with the default option value, you can check it on my question.
I've shared a full code.
symfony2 selected option

Community
  • 1
  • 1
Dezigo
  • 3,220
  • 3
  • 31
  • 39