将变量传递给表单 - Symfony2

时间:2012-09-11 15:47:33

标签: symfony doctrine-orm

我在这个主题上阅读了其他问题,但我的应用仍然不起作用:(

这是我的代码:

class ChooseCatType extends AbstractType
{
    protected $user;

    function __construct(\EM\MyFriendsBundle\Entity\User  $user) 
    {
        $this->user = $user;
    }


     public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('name', 'entity', array(
            'class' => 'EMMyFriendsBundle:Category',
            'property' => 'name',
            'query_builder' => function ($repository) use ($user)
                { return $repository->createQueryBuilder('cat')
                                    ->select('cat')
                                    ->where('cat.user', ':user')
                                    ->setParameter('user', $user);
                },
                        ));
    }

    public function getName()
        {
            return 'choose_category';
        }
    }

这是在我的控制器中:

$cat = new Category();

        $dd_form = $this->createForm(new \EM\MyFriendsBundle\Entity\ChooseCatType($user), $cat);

但是我收到了错误:

Notice: Undefined variable: user in C:\xampp\htdocs\MyFriends\src\EM\MyFriendsBundle\Entity\ChooseCatType.php line 24

是use语句的行。 我的代码和他们使用具体存储库的其他相关问题的答案之间存在差异,但我认为这不应该是问题。或者是?请帮我找到解决方案。

1 个答案:

答案 0 :(得分:2)

错误告诉您需要知道的全部内容:您正在使用从未定义过的变量($ user)。只需在$ builder->添加行之前添加:

$user = $this->user;