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クラスによって...
新しくテーブルを作ってエンティティと関連づける方法... 今回は非常に要望が多かった新しいテーブルを作ってエンティティとしてデータ取得をできるようにする方法をご紹介します。 この方法は3系のもので、まもなくリリースされるEC-CUBE4系では利用できませんのでご注意ください。 データベースの作成 ドクトリン定義ファイルの作成(dcm....
商品一覧のページネーションに「最初へ」「最後へ」を表示する方法... 商品一覧ページのページネーションはProduct/list.twigを見るとpagination.twigをインクルードすることで表示されています。 pagination.twigをのぞいて見ると「最後へ」の部分は次のようなコードが書かれています。 このリンクを表示するにはconfi...
ドクトリンで用いられるエンティティとレポジトリとは?... EC-CUBE3やEC-CUBE4で開発を行なっていると必ず耳にするのがドクトリンやエンティティ、レポジトリといったデータベース周りの用語です。 ECサイトはデータベースと密接に関係しているため、これらを用いずにEC-CUBEの開発を行うことは不可能です。 エンティティとレポジトリとは? ...