form-types-validation について
Symfony 開発向けのフォーム型とバリデーションのスキルです。エンティティ、DTO、フィールドの制約に加え、バリデーショングループ、データトランスフォーマー、イベント、送信テストを扱います。
主な機能
- 01明示的なフィールド型とオプションでフォーム型を構築
- 02エンティティ、DTO、フィールドに制約を設定
- 03バリデーショングループでルールを分割
- 04必要に応じたデータトランスフォーマーとフォームイベント
- 05正常・不正な送信と独自制約のテスト
活用シーン
- 01Symfony フォーム型の作成や変更
- 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()に渡します。
注意事項
- 無効な送信時に 422 を返すよう、
createView()ではなくフォームをrender()に渡します。 - 変換できないトランスフォーマーは
TransformationFailedExceptionをスローします。不正な値を返すことはありません。 - 同じ制約をフォームとエンティティの両方に重複して設定しないでください。
- 複数ステップのフローとカスタム違反マッパーは比較的新しい機能です。まず、インストールされている Symfony のバージョンを確認してください。
段階的な情報開示
- 実装方針とリスク管理には、このファイルを使用します。
- 詳細な実装が必要な場合は、リファレンスを参照します。
出力要件
- フォームタイプと、それらが依存する制約、および制約のグループ。
- トランスフォーマー、リスナー、カスタム制約と、それぞれを使用する理由。
- 有効な送信、無効な送信(422)、各カスタム制約のテスト。
リファレンス
reference.md
コメント
Markdown 対応