我开始学习symfony 3.对于第一个项目,我选择了一个简单的totodlist。
所以现在我有可能在我的数据库中创建并保存用户。接下来,我可以为他们创建一个任务。
我想创建一个复选框,在哪里可以选择用户来执行任务。
所以我需要将我的用户数据库中的数据放入复选框表单($ temp_users varbiable)。我不知道怎么做。
有人可以告诉我该怎么做。
下面是我的代码:
public function createAction(Request $request)
{
$todo = new Todo;
$users = $this->getDoctrine()
->getRepository('AppBundle:User')
->findAll();
$temp_users = array();
foreach($users as $user) {
$temp_users[$user->getUsername()] = $user->getId();
}
$form = $this->createFormBuilder($todo)
->add('name', TextType::class, array('attr' => array('class' => 'form- control', 'style' => 'margin-bottom:15px')))
->add('wykona', CheckboxType::class, array('label' => $temp_users, 'required' => false,))
答案 0 :(得分:0)
我不确定您的复选框是什么意思 - 您想要选择一个还是多个用户?我会假设你只想为了简单而选择一个(你可以根据自己的喜好调整它)
您不需要让所有像您一样的用户尝试这样做,这样的事情应该有效(未经测试)
$form = $this->createFormBuilder($todo)
->add('user', EntityType::class, array(
'label' => 'Name',
'class' => AppBundle\Entity\User::class,
'choice_label' => 'name', //if you have a variable 'name' in your User entity, otherwise you will need a __toString method in the User entity
));
答案 1 :(得分:0)
在 createAction 中尝试此代码。
将此添加到您的代码中
$form = $this->createFormBuilder($todo)
->add('users', EntityType::class, array(
'class' => 'AppBundle:User',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.name', 'ASC')
},
'choice_label' => 'name',
'multiple' => true,
'expanded' => true,
));
此外,您不再需要 createAction 中的以下代码。
删除代码中的代码
$users = $this->getDoctrine()
->getRepository('AppBundle:User')
->findAll();
$temp_users = array();
foreach($users as $user) {
$temp_users[$user->getUsername()] = $user->getId();