Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2 set selected in EntityType

i have a problem when I would to set a default value in a select (selected="selected") in a form generated with Symfony 2 (2.8.9).

I have this code in my controller:

$news = new News();
$news->setCategory(1);
//create form
$form = $this->createForm(NewsType::class, $news);

And this in my FormType

public function buildForm(FormBuilderInterface $builder, array $options)
{ 
     $builder->add('category', EntityType::class,
            array(
                'placeholder' => 'Choise',
                'class' => 'AppBundle:NewsCat',
                'choice_label' => 'name'
            ));
}

AppBundle:NewsCat create a list of id => name (ex: 1 => 'Sport', 2 => 'Politic', etc), and I want that when I setCategory(1) it should be seen "Sport" as selected="selected" in my select.

Now i see ever "Choise".

I have tried to search everywhere on the web, I hope you can help me :)

Thanks to all

HTML code screen

like image 936
pk86 Avatar asked Mar 25 '26 19:03

pk86


1 Answers

You need to use data option to set selected object. My example below.

$defaultTech = $company->getDefaultTech();
if ($company->getForceDefaultTech() && $defaultTech != null) {
    $builder->add('tech', HiddenType::class, ['data' => $defaultTech->getId()]);
} else {
    $builder->add('tech', EntityType::class, [
        'class' => 'HelpBundle\Entity\UserAccount',
        'choice_label' => 'displayName',
        'data' => $defaultTech,
        'query_builder' => function (EntityRepository $er) use ($company) {
            $qb = $er->createQueryBuilder('ua');
            return $qb
                ->where('ua.company = :company')
                ->andWhere('ua.techie = 1')
                ->setParameter('company', $company);
        },
    ]);
}
like image 141
zveljkovic Avatar answered Mar 27 '26 07:03

zveljkovic



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!