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クラスによって...
Your proxy directory “/var/www/src/Eccube/..... SSHからマイグレーションなどapp/consoleのコマンドを実行しようとした際に、ドクトリンのキャッシュファイルを書き込めないために発生するエラーです。 通常app/cache/doctrine/proxiesは所有者もグループもapacheとなるため、コマンドラインから他のユーザ...
Twig内で文字列の一部分を切り出す方法 Slice使用... twigテンプレート内で文字列の一部を切り出したい時があります。 そんな時はsliceフィルタを使用してtwig内だけで切り出しを実行することが可能です。 2文字目以降を切り出す(1文字目を削除) sliceフィルタの第1引数は開始位置です。 sliceフィルタにはシンタックスシ...
メーカープラグインのメーカー一覧を取得する方法... メーカープラグインを使用される方が多いと思います。 メーカーの一覧を表示したい場合は次のようにメーカープラグインのレポジトリクラスでfindByすることで取得が可能です。 Controllerなどで使える実際のコード 全件取得するのでfindByの第1引数は空の配列、第2引数はソート順...