2012-09-11 52 views
1

我看了关于这一议题的其他问题,但我的应用程序仍然没有工作:(传递变量的形式 - Symfony2的

这里是我的代码:

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 

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

+0

优秀的问题...帮了很多。 –

+1

我很高兴它帮助:) – Faery

+0

谢谢。 。 。 。 。 。 –

回答

2

错误告诉你所有你需要知道的:你正在使用一个从未被定义过的变量($ user)。只需在$ builder-> add行之前添加:

$user = $this->user; 
+0

非常感谢! – Faery