【发布时间】:2019-10-08 12:52:19
【问题描述】:
在 symfony3.4 项目中,我有两个实体:Personne 和 Nationalite
在我的表单下拉列表中,我想默认选择 Nationalite 'French'。
PersonneType.php:
...
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('nationalite', EntityType::class, array(
'class' => 'AppBundle:Nationalite',
'choice_label' => 'libelle',
'required' => false,
'empty_data' => function(NationaliteRepository $repo) {
return $repo->getNationaliteParDefaut();
}
))
->add...
在 NationaliteRepository.php 中:
...
public function getNationaliteParDefaut(){
$qb = $this->createQueryBuilder('n');
$qb->where($qb->expr()->eq('n.codeInsee', ':code_insee'))
->setParameter('code_insee', 99100); //99100 is France code_insee
return $qb->getQuery()->getOneOrNullResult();
}
...
此方法产生以下错误:
可捕获的致命错误:参数 1 传递给 AppBundle\Form\PersonneType::AppBundle\Form{closure}() 必须是 AppBundle\Repository\NationaliteRepository 的实例, Symfony\Component\Form\Form 给定,在第 620 行的 /var/www/...vendor/symfony/symfony/src/Symfony/Component/Form/Form.php 中调用并定义
【问题讨论】: