FormType内のチェックボックス(CheckboxFormType)のお話です。チェックボックスのFormTypeにintやsmallintのカラムを割り当てた場合TransformationFailedExceptionが発生します。
EC-CUBEのフレームワークではチェックボックスはbool値をデータとしてとることが原因となります(trueかfalse)

EC-CUBEではチェックボックスタイプがほとんど使用されていないためチェックボックスに整数値のカラムをそのまま入れられないことは盲点となっています。(管理画面のチェックボックスはほぼmultipleなchoiceタイプ)

チェックボックスタイプにdel_flgなど整数値をそのまま渡すと”TransformationFailedException expected a boolean”というエラーが発生します。

コントローラでbooleanにキャストする

チェックボックスタイプが使用されている貴重なページがコンテンツ管理の新着情報編集ページです。
「別ウィンドウを開く」の部分で使用されています。

チェックボックスタイプ

一方でこのチェックボックスにマッピングされているカラムは「link_method」でsmallint(整数)となっています。
そのためNewsController内では次のようなキャストが行われています。

チェクボックスフォームにIntegerToBooleanTransformerを使う

FormType内だけで完結するにはIntegerToBooleanTransformerを使用する方法があります。
これは整数値が渡された場合にFormTypeがbooleanに変換してデータを扱うためのTransFormerクラスです。下のようにaddModelTransformerすることで自動で変換してくれます。

ECサイトの開発は開発工程の90%以上がフォームとの格闘だと思っています。FormTypeを制するものはEC-CUBEを制す!ぜひEC-CUBEのフォームカスタマイズに慣れ親しんでみてください。

関連するカスタマイズ

おすすめ商品管理プラグインの「説明文」を必須解除する方法... おすすめ商品管理プラグイン(Recommend)は表示する商品を自分で選択できる非常に便利なプラグインですが、商品ごとに説明文を入力しなければ登録することができません。 この必須を解除して任意項目にする方法をご紹介します。 フォームの項目が必須かどうかはFormTypeクラスによって...
Twig内で文字列の一部分を切り出す方法 Slice使用... twigテンプレート内で文字列の一部を切り出したい時があります。 そんな時はsliceフィルタを使用してtwig内だけで切り出しを実行することが可能です。 2文字目以降を切り出す(1文字目を削除) sliceフィルタの第1引数は開始位置です。 sliceフィルタにはシンタックスシ...
基本税率を切り捨て、切り上げ、四捨五入に変更... 開発メンバー全員のルールを揃えておくことが重要です。 dtb_tax_ruleテーブルのcalc_ruleの設定値は次の表の通りです。 calc_rule 方式 1 四捨五入 2 切り捨て 3 切り上げ これをマイグレーションで...
新しくテーブルを作ってエンティティと関連づける方法... 今回は非常に要望が多かった新しいテーブルを作ってエンティティとしてデータ取得をできるようにする方法をご紹介します。 この方法は3系のもので、まもなくリリースされるEC-CUBE4系では利用できませんのでご注意ください。 データベースの作成 ドクトリン定義ファイルの作成(dcm....