mcpField
F
form-types-validation

form-types-validation

github.com/dev-toolings开发22784 次安装3 周前更新
代码仓库

关于 form-types-validation

面向 Symfony 开发的表单类型与验证技能,涵盖实体、DTO 和字段上的约束。还介绍验证组、数据转换器、表单事件,以及有效和无效提交的测试。

主要功能

  1. 01使用明确的字段类型和选项构建表单类型
  2. 02在实体、DTO 或字段上设置约束
  3. 03通过验证组区分规则
  4. 04按需使用数据转换器和表单事件
  5. 05测试有效、无效提交及自定义约束

适用场景

  1. 01创建或修改 Symfony 表单类型
  2. 02为注册和个人资料表单设置不同规则
  3. 03转换与模型表示不同的表单数据
  4. 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 或表单字段添加验证约束。
  • 通过验证组为不同上下文(注册与个人资料)设置不同规则。
  • 使用数据转换器转换值,或响应表单事件。
  • 编写自定义约束,或构建分多个步骤的表单。

默认工作流

  1. 将业务约束放在实体或 DTO 上;表单级约束仅用于上传等仅与 UI 相关的规则。
  2. 使用明确的字段类型和选项构建表单类型。
  3. 当上下文不同时,将规则拆分到不同的验证组中。
  4. 仅在模型与视图不一致时添加数据转换器或 PRE_SET_DATA/PRE_SUBMIT 监听器。
  5. 在控制器中检查 isSubmitted() && isValid(),并将表单本身传给 render()。

注意事项

  • 将表单而非 createView() 传给 render(),这样无效提交才会返回 422。
  • 无法转换时,转换器应抛出 TransformationFailedException,绝不能返回无效数据。
  • 不要在表单和实体上重复添加相同的约束。
  • 多步骤流程和自定义违规映射器是近期新增的功能:请先确认已安装的 Symfony 版本。

渐进式披露

  • 使用此文件了解执行方式和风险控制。
  • 需要深入了解实现细节时,请打开参考资料。

输出约定

  • 表单类型及其依赖的约束,并注明约束所属的验证组。
  • 转换器、监听器或自定义约束,并说明各自的原因。
  • 针对有效提交、无效提交(422)以及每个自定义约束编写的测试。

参考资料

  • reference.md

评论

支持 Markdown