在 FormType Symfony4 中获取 $this->getUser()
get $this->getUser() in FormType Symfony4
我有一个名为配置文件的实体,与类别有关系。两者都在 company_id.
范围内
当我创建一个新的配置文件时,我只想显示我的 company_id 中可能的类别。
CategoryRepository 有以下方法:
/**
* @return Category[] Returns an array of Category objects
*/
public function findByCompany($value)
{
dump($value);
return $this->createQueryBuilder('p')
->where('p.company = :val')
->setParameter('val', $value)
->getQuery()
->getResult()
;
}
当从类别索引中使用时,该方法可以正常工作,其中列出了我的公司类别。
但是,不是,在创建个人资料时,我需要获得关系。
ProfileType形式如下:
$builder
->add('name')
->add('type')
->add('serial')
->add('sgin')
->add('sensor', EntityType::class, [
'class'=>'App\Entity\Sensor',
'choice_label' => 'name',
])
->add('category', EntityType::class, [
'class'=>'App\Entity\Category',
'choice_label' => 'name',
'query_builder' => function (CategoryRepository $er) use($user) {
return $er->findByCompany($user);
},
])
据我所知,这里的 $user 应该包含 $this->getuser() (因为我可以从中调用 getCompany),或者传递整个公司实体。传递 ID 本身似乎不起作用,我尝试手动进行。
在控制器中,在您的 createForm()
函数中设置一个选项以获取您的用户 ID:
'userId' => $this->getUser()->getId()
然后,在 ProfileType.php 中的 buildform()
函数中 $builder->add(...)
让用户通过您在控制器中设置的选项,如下所示:
$userId = $options['userId'];
我有一个名为配置文件的实体,与类别有关系。两者都在 company_id.
范围内当我创建一个新的配置文件时,我只想显示我的 company_id 中可能的类别。
CategoryRepository 有以下方法:
/**
* @return Category[] Returns an array of Category objects
*/
public function findByCompany($value)
{
dump($value);
return $this->createQueryBuilder('p')
->where('p.company = :val')
->setParameter('val', $value)
->getQuery()
->getResult()
;
}
当从类别索引中使用时,该方法可以正常工作,其中列出了我的公司类别。
但是,不是,在创建个人资料时,我需要获得关系。
ProfileType形式如下:
$builder
->add('name')
->add('type')
->add('serial')
->add('sgin')
->add('sensor', EntityType::class, [
'class'=>'App\Entity\Sensor',
'choice_label' => 'name',
])
->add('category', EntityType::class, [
'class'=>'App\Entity\Category',
'choice_label' => 'name',
'query_builder' => function (CategoryRepository $er) use($user) {
return $er->findByCompany($user);
},
])
据我所知,这里的 $user 应该包含 $this->getuser() (因为我可以从中调用 getCompany),或者传递整个公司实体。传递 ID 本身似乎不起作用,我尝试手动进行。
在控制器中,在您的 createForm()
函数中设置一个选项以获取您的用户 ID:
'userId' => $this->getUser()->getId()
然后,在 ProfileType.php 中的 buildform()
函数中 $builder->add(...)
让用户通过您在控制器中设置的选项,如下所示:
$userId = $options['userId'];