【问题标题】:Symfony2 set selected in EntityType在 EntityType 中选择的 Symfony2 集
【发布时间】:2017-01-04 01:35:50
【问题描述】:

当我要在 Symfony 2 (2.8.9) 生成的表单中的选择 (selected="selected") 中设置默认值时遇到问题。

我的控制器中有这段代码:

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

这在我的 FormType 中

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

AppBundle:NewsCat 创建一个 id => 名称列表(例如:1 => 'Sport'、2 => 'Politic' 等),我希望当我 setCategory(1) 时应该看到“Sport " as selected="selected" 在我的选择中。

现在我看到了“选择”。

我已经尝试在网络上到处搜索,希望你能帮助我:)

谢谢大家

HTML code screen

【问题讨论】:

    标签: php forms symfony select


    【解决方案1】:

    您需要使用数据选项来设置选定的对象。下面是我的例子。

    $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);
            },
        ]);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多