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. 01Symfony フォーム型の作成や変更
  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() に渡します。

注意事項

  • 無効な送信時に 422 を返すよう、createView() ではなくフォームを render() に渡します。
  • 変換できないトランスフォーマーは TransformationFailedException をスローします。不正な値を返すことはありません。
  • 同じ制約をフォームとエンティティの両方に重複して設定しないでください。
  • 複数ステップのフローとカスタム違反マッパーは比較的新しい機能です。まず、インストールされている Symfony のバージョンを確認してください。

段階的な情報開示

  • 実装方針とリスク管理には、このファイルを使用します。
  • 詳細な実装が必要な場合は、リファレンスを参照します。

出力要件

  • フォームタイプと、それらが依存する制約、および制約のグループ。
  • トランスフォーマー、リスナー、カスタム制約と、それぞれを使用する理由。
  • 有効な送信、無効な送信(422)、各カスタム制約のテスト。

リファレンス

  • reference.md

コメント