Symfony表单参数传递异常:自定义表单始终使用默认值
问题解决:Symfony表单选项
postedBy始终使用默认值 你的问题出在控制器创建表单时的参数传递错误。Symfony的createForm方法第二个参数是表单要绑定的数据对象,第三个参数才是表单选项数组。你现在把选项数组传给了第二个参数,导致表单类型无法正确接收postedBy值,只能使用默认的0。
修正后的控制器代码
如果你的表单不需要绑定初始数据对象,第二个参数传null:
$form = $this->createForm(StudyDecomposedType::class, null, [ 'postedBy' => $this->getUser()->getId(), ]);
如果需要绑定实体数据(比如$studyDecomposed是对应的实体实例),则保留数据对象作为第二个参数,选项放在第三个位置:
// 假设$studyDecomposed是你要绑定的实体对象 $form = $this->createForm(StudyDecomposedType::class, $studyDecomposed, [ 'postedBy' => $this->getUser()->getId(), ]);
为什么之前的代码不生效?
createForm的方法签名是:
public function createForm(string $type, mixed $data = null, array $options = []): FormInterface
你之前的代码把选项数组传给了$data参数,表单类型的$options数组并不会读取这个值,所以只能使用configureOptions中设置的默认值0。修正参数位置后,表单就能正确获取到你传入的用户ID了。
内容的提问来源于stack exchange,提问作者aubin thomas
相关产品推荐
相关产品推荐

