有了最新的Symfony,我有一个自定义表格,根据条令要求在实体上填写一个字段。
要构造此请求,它需要一个参数
id
由控制器传递,带有选项“postedBy”
class StudyDecomposedType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('subjects', EntityType::class,[
'class' => Subject::class,
'choice_label' => 'identifier',
'required' => false,
'multiple' => true,
'query_builder' => function (EntityRepository $er) use ($options): QueryBuilder {
return $er->createQueryBuilder('a')
->leftJoin("a.studies", "s")
->leftJoin(Studyaccess::class, 'sa', 'WITH', 's=sa.study')
->where('(sa.user = :userid AND (sa.r = 1 OR sa.w = 1)) OR (a.owner= :userid)')
->setParameter('userid', $options['postedBy']);
},
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'postedBy' => 0,
]);
$resolver->setAllowedTypes('postedBy', 'int');
}
在我的控制器中,我制作了这样的表格:
$form = $this->createForm(StudyDecomposedType::class,
$options= ['postedBy' => $this->getUser()->getId(),]
);
但是,无论我在选项中输入什么值,请求中的值都是我默认输入的值(此处为0)。
有人能帮我吗,我完全迷路了
参数
userid
应该是通过对
$options
来自crontroller,但该值从未更改。
我验证了控制器中的id,查看了生成的sql和
userid
始终处于其默认值