Symfony3:表单:使用相关模型条目填充 select
Symfony3: form: populate select with related model entries
我有两个模型,topic 和 user。两者之间是多对一的关系(一个话题只能由一个用户定义)如:
class User
{
private $idUser;
private $username;
}
class Topic
{
private $idTopic;
private $topicName;
private $idUser;
}
主要问题:我想(使用 symfony-forms)为 topic 模型创建一个创建表单。该表格将包含:
- 一个题目名称输入
- a user select(由数据库中现有用户填充的列表。显示的值将是用户名当然)。
我创建了一个 TopicType class,它将构建 topic 创建表单:
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 中的 entity manager,我该如何检索用户列表并填充选项上下文?
- 在调用
createForm
方法时,我可以在控制器中传递一个$users
数组作为参数吗?如果是这样,如何?
- 如果您了解我正在尝试做的事情,是否有 better/simplier 方法来完成它?我错过了什么吗?
我知道这个问题可能看起来很相似,但我在相关主题上找到的所有解决方案在 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
我有两个模型,topic 和 user。两者之间是多对一的关系(一个话题只能由一个用户定义)如:
class User
{
private $idUser;
private $username;
}
class Topic
{
private $idTopic;
private $topicName;
private $idUser;
}
主要问题:我想(使用 symfony-forms)为 topic 模型创建一个创建表单。该表格将包含:
- 一个题目名称输入
- a user select(由数据库中现有用户填充的列表。显示的值将是用户名当然)。
我创建了一个 TopicType class,它将构建 topic 创建表单:
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 中的 entity manager,我该如何检索用户列表并填充选项上下文?
- 在调用
createForm
方法时,我可以在控制器中传递一个$users
数组作为参数吗?如果是这样,如何? - 如果您了解我正在尝试做的事情,是否有 better/simplier 方法来完成它?我错过了什么吗?
我知道这个问题可能看起来很相似,但我在相关主题上找到的所有解决方案在 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