土曜日, 5月 10, 2025
No menu items!
ホームニューステックニュースSymfony(EC-CUBE) FormType クラス備忘録 #PHP - Qiita

Symfony(EC-CUBE) FormType クラス備忘録 #PHP – Qiita



Symfony(EC-CUBE) FormType クラス備忘録 #PHP - Qiita

1 エンティティに保存せず画面だけで使いたいフィールド mapped:false / property_path:false 検索フォーム・確認チェック用 hidden に最適 2 必須⇆任意を動的に切り替えたい a. $form->get('foo')->setRequired(false)
b. イベントで required オプション変更 PRE_SET_DATA で初期値を見て分岐 3 CSRF で弾かれる API / Webhook 受信用 ルートフォーム csrf_protection:false 併せて allow_extra_fields:true で未知キー無視 4 エラーを 1 か所(フォーム上部)に集約したい ルートに error_bubbling:true 個別配置なら error_mapping 5 i18n:ラベルを翻訳キーで書きたい label_format:'form.%name%' + translation_domain:'admin' %name% がフィールド名に置換 6 CollectionType の add/remove が効かない 子 Type:entry_options['label'=>false] + prototype:true/親:by_reference:false setter 無い時は allow_add, allow_delete 7 アップロード 2 MB 超過時のメッセージ変更 ルート post_max_size_message:'ファイルが大きすぎます' FileTypeconstraints も要追加 8 PUT/DELETE など HTML 非対応メソッド送信 setMethod('POST') + hidden _method EC-CUBE でも同じ(メソッドスプーフ) 9 環境ごとに送信先 URL を動的変更 controller で $form->setAction($url) setAction() は Builder でも可 10 状態別にバリデーショングループ切替 validation_groups => fn(FormInterface $f) => $f->getData()->isDraft() ? ['Draft'] : ['Default'] Closure で柔軟指定 11 row / label へ属性を一括追加 row_attr / label_attr または $builder->setAttribute() テーマが属性を出力しているか確認 12 特殊 getter/setter を使いたい getter:'isPublished', setter:'markPublished' DTO でも活用可 13 空文字を null にしたくない empty_data:'' + trim:false API で “空文字も値” の時 14 フォーム複数描画で ID 衝突が怖い それぞれで getBlockPrefix() を上書き Twig ブロック名も衝突回避 15 動的フィールド追加時にバリデーションが効かない 追加後に setValidationGroups()POST_SUBMIT で再評価 Choice 依存入力で発生しがち 16 フォーム全体を multipart にしたい $builder->setAttribute('enctype','multipart/form-data') FileType があれば自動設定されるが念のため 17 ArrayCollection の追加が永続化されない 親エンティティ addXxx() 実装 + by_reference:false Doctrine の cascade も確認 18 Ajax で部分バリデーションしたい サブフォーム validation_groups:['Partial'] JS で fetch → JSON エラー返却 19 ラベル/ヘルプを HTML 混在にしたい label_html:true, help_html:true アイコンタグや
も使える 20 HTML5 のブラウザ自動検証を無効化したい ルート form_attr:['novalidate'=>'novalidate'] JS で独自検証を行うケース 21 複数フィールドをグループ化 (fieldset) したい add('group', FormType::class,['label'=>false]) 内に子フィールド compound:true でネスト可能 22 ChoiceType の表示順を厳密保持したい choice_loader:null + 配列順に choices 指定 or preferred_choices で先頭固定 23 ChoiceType にプレースホルダーが欲しい placeholder:'---- 選択 ----' required:false にしないと選択不可 24 DateType の年範囲を限定したい years: range(date('Y'), date('Y')+5) 期間外日付はバリデーション NG 25 EntityType でソフトデリートを除外したい query_builderWHERE e.deletedAt IS NULL リポジトリで共通メソッドを切ると◎ 26 エラーメッセージを別翻訳ドメインにまとめたい translation_domain:'errors' + 各 invalid_message はキーで指定 バリデーションメッセージにも適用 27 FileType を非活性表示 (値保持) したい disabled:true 編集不可モード用 28 2 フィールドを結合して 1 プロパティへ保存 setDataMapper(new CustomMapper()) 例:電話番号 (市外 + 市内) 29 HTML id をカスタムしたい attr:{id:'my_custom_id'} CSS/JS でピンポイント操作 30 DB レコード数に応じてフィールドを動的生成 addEventSubscriber(new DynamicFieldSubscriber($repo)) PRE_SET_DATA でループ追加



フラッグシティパートナーズ海外不動産投資セミナー 【DMM FX】入金

Source link

Views: 2

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

Most Popular

Recent Comments