关于 form-types-validation
面向 Symfony 开发的表单类型与验证技能,涵盖实体、DTO 和字段上的约束。还介绍验证组、数据转换器、表单事件,以及有效和无效提交的测试。
主要功能
- 01使用明确的字段类型和选项构建表单类型
- 02在实体、DTO 或字段上设置约束
- 03通过验证组区分规则
- 04按需使用数据转换器和表单事件
- 05测试有效、无效提交及自定义约束
适用场景
- 01创建或修改 Symfony 表单类型
- 02为注册和个人资料表单设置不同规则
- 03转换与模型表示不同的表单数据
- 04构建自定义约束或多步骤表单
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill form-types-validation安装后在 Claude Code 中输入/form-types-validation确认已加载。
附带文件reference.md
详细介绍
表单类型验证(Symfony)
使用场景
- 构建或修改 Symfony 表单类型。
- 为实体、DTO 或表单字段添加验证约束。
- 通过验证组为不同上下文(注册与个人资料)设置不同规则。
- 使用数据转换器转换值,或响应表单事件。
- 编写自定义约束,或构建分多个步骤的表单。
默认工作流
- 将业务约束放在实体或 DTO 上;表单级约束仅用于上传等仅与 UI 相关的规则。
- 使用明确的字段类型和选项构建表单类型。
- 当上下文不同时,将规则拆分到不同的验证组中。
- 仅在模型与视图不一致时添加数据转换器或
PRE_SET_DATA/PRE_SUBMIT监听器。 - 在控制器中检查
isSubmitted() && isValid(),并将表单本身传给render()。
注意事项
- 将表单而非
createView()传给render(),这样无效提交才会返回 422。 - 无法转换时,转换器应抛出
TransformationFailedException,绝不能返回无效数据。 - 不要在表单和实体上重复添加相同的约束。
- 多步骤流程和自定义违规映射器是近期新增的功能:请先确认已安装的 Symfony 版本。
渐进式披露
- 使用此文件了解执行方式和风险控制。
- 需要深入了解实现细节时,请打开参考资料。
输出约定
- 表单类型及其依赖的约束,并注明约束所属的验证组。
- 转换器、监听器或自定义约束,并说明各自的原因。
- 针对有效提交、无效提交(422)以及每个自定义约束编写的测试。
参考资料
reference.md
评论
支持 Markdown