我有两个模型,主题和用户。两者通过多对一关系(主题仅由一个用户定义)相关联,例如:
class User
{
private $idUser;
private $username;
}
class Topic
{
private $idTopic;
private $topicName;
private $idUser;
}
主要关注点:我想(使用symfony-forms)为主题模型创建一个创建表单。该表格将包含:
- 主题名称输入
- 用户选择 (由数据库中的现有用户填充的列表。当然,显示的值将是用户名)。
我创建了一个 TopicType 类,该类将构建主题创建表单:
class TopicType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->
->add('topicName')
->add(/* 'idUser', 'choice', 'THE USER LIST ???*/)
}
public function configureOptions(FormBuilderInterface $builder, array $options)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle'Entity'Topic'
));
}
}
- 考虑到我无权访问 TopicType 上下文中的实体管理器,如何检索用户列表并填充选项? 我可以在
- 调用方法时将控制器中的
$users
数组作为参数传递createForm
吗?如果是这样,如何? - 如果您了解我要做什么,有没有更好/更简单的方法来完成它?我错过了什么吗?
我知道这个问题可能看起来很相似,但我在相关主题上找到的所有解决方案都在 Symfony3 中被不推荐使用
任何帮助将不胜感激。祝大家有美好的一天。
你应该尝试这样的事情(你必须调整代码):
->add('User', EntityType::class, array(
'class' => 'xxxBundle'Entity'User',
'choice_label' => 'username',
'required' => true,
'multiple' => false,
))
不要忘记:
use Symfony'Bridge'Doctrine'Form'Type'EntityType;
更多信息在这里 : http://symfony.com/doc/current/reference/forms/types/entity.html