新しく項目を追加する方法やフォームを拡張する方法が公式ドキュメントだけだと最初はよくわからなかったのでメモという意味もこめて解説します。今回は商品項目に“重量”という項目を新しく追加する例です。プログラム中では“weight”と表現することとします。項目の追加だけではあまり意味がないので管理画面の商品登録フォームの拡張を軽く行っていきます。10.1.38DBから商品名などを引っ張ってくる際は、(商品IDなどを基に)商品テーブルへアクセスして商品名のデータを取得するのが一般的だと思います。各々が一つのエンティティで、エンティティを管理して組み合わせることによってシステムが成り立ってます。項目の追加(拡張)は商品テーブルに対してではなく、“商品エンティティ”に対して行います。/app/Customize/Entityの中に置きます。ファイル名はなんでもいいです。今回はファイル名を”ProductTrait.php“としました。/app/Customize/Entity/ProductTrait.phpを以下のようにします。//ココに実際の拡張内容などを記述していきます}記述が終わったらこのProductTrait.phpを拡張ファイルとしてProxyを通すコマンドを実行します。eccube:generate:proxies実行結果がこんな感じの内容が出力されていれば成功です。C:\DocumentRoot\eccube-4.0.2/app/proxy/entity/Product.php拡張の下準備は終了したので実際に新規項目を追加していきます。$weight;name:カラム名type:データ型nullable:null制約の有無MySQLでカラムを追加する時と同じように、他にも色々な制約を定義することができます。weightプロパティの宣言も忘れずに。successfully!コレでdtb_productというテーブルにweightというカラムが追加されていると思います。項目を追加しただけでは何も変わらないので「商品登録フォーム」や「商品編集フォーム」などから商品の重量を設定・変更できるようにエンティティに対してフォームの拡張を行っていきます。)FormAppendでinput要素の追加・設定を行っていきます。公式ドキュメントでは「auto_render=falseにしなさい」みたいな記載がありますがアレは多分ミスです。ここで色々な設定をしてもauto_render=trueにしないと何も反映されません。細かい設定はoptions={}の中で行っていきます。requiredをtrueにすると入力必須項目となります。labelに設定した値は単純にinput要素のラベル(名称)となります。上記の二つ以外にもセレクトボックス・ラジオボタンにするなど記述次第で細かい設定が色々できますが、ココでは割愛します。管理画面から商品登録画面を開いてフォームの確認をしてみましょうlabelが「重量」のテキストフィールドが生成されていれば成功です。実際に値を入力して商品の新規登録などを行ってみてください。ここまでで新規項目の追加&フォームの拡張が完了しました。※うまく反映されなかったりしたらキャッシュを削除してみてください。--no-warmupおまけせっかくなので、商品詳細画面(商品情報ページ?)で重量の値を表示してみましょう。重量は必須項目としていないので値が設定されていなかったら表示しないこととします。ブラウザ(eccubeの管理画面)からテンプレートの編集を行っていきます。管理画面→コンテンツ管理→ページ管理→商品詳細ページそしたら、画像のようなページが表示されるかと思います。エディタ内で下方向にスクロールして375行目周辺に手を加えていきます。%}Product.freeareaに関する記述は既存のもので、それをほぼコピーしただけです。記述が終わったら、ブラウザ画面右下の「登録」ボタンを押下して新しいテンプレートを適用させます。商品を新しく登録(重量に何かしら値を入れるのを忘れずに)して追加した商品の詳細ページへ飛びます。下のほうに小さくですが表示されてます。スタイルなども適用させてなくてこの状態で表示させる意味はないですが、一応「重量」という項目の値を表示させることはできました。応用していくと色々できそうです。ご覧いただきありがとうございました。見つかりませんでした。00:08お世話になっております。フレームワークの初心者です。)を追加しても、画面がエラーで表示されなくなりました。キャッシュを削除してからやってもダメでした。解決法はないでしょうか。お手すきの際に、ご回答いただければと思います。コメントをキャンセルメールアドレスが公開されることはありません。*サイトプロフィールiNgWeb系エンジニアです。