You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:57:11