EC-Cube2の開発に挑戦
はじめに
EC-Cubeというフレームワークをご存知でしょうか?
PHPでECサイトをお手軽に構築できるというフレームワークですが非常に情報が少なく、書籍もほぼありません。
特に今回紹介するEC-Cube2は現代ではほぼ情報がありません。
入門書がないので案件を担当する場合、手探りになります。
そこで私のメモを少しづつ整理して公開いたします。
HTMLテンプレートの探し方
コントローラのinit関数で $this->tpl_mainpage とか書いてあるあたりでSmartyテンプレートを指定している場合が多い。
(laravel の return viewの引数相当)
ただし処理の途中で書き換えているパターンもあります。
Controllerからtplテンプレートに値を送るには
Laravelなどと違い、値を渡す専用の関数がないため、知らないとコードを見ても見当もつかないので詰みます。
実はLC_Page_○○ クラスのプロパティに設定するだけです。
特に専用の関数を使う必要はなく、$this->任意の変数名とすると自動でtplに送ってくれる。
例えば
$this->order_id = 1000;
これで、value=1000がレンダリングされます。
<input name="order_id" type="hidden" value="<!--{$order_id}-->" />
テンプレートファイルが更新されない時
管理画面のパラメーター管理から「SMARTY_FORCE_COMPILE_MODE」をtrueにする。
※案件によってはそのメニューを消されてしまっている場合もある。
入力フォームのセット
入力フォームの値を出し入れするには
SC_Form_XXX_Ex クラスを使用する。
このFormクラスの中でHTMlのinputタグとのバインドやバリデーションルールを設定する。
例
$this->addParam('メモ', 'memo', STEXT_LEN, 'aKV', array('NO_SPTAB', 'SPTAB_CHECK', 'MAX_LENGTH_CHECK'));
このクラスのインスタンスにsetValue関数を使って値を流し込んでいく。
こんな感じ。
$objFormParam = new SC_FormOrderEditParam_Ex();
$objFormParam->setValue('order_id', $_REQUEST['order_id']);
おわりに
2025年現在、メジャーなフレームワークについてはyoutubeやChatGPTなどで情報を得やすくなってきました。
しかしマイナーなフレームワークはこれらも情報源にならず、入門レベルの事すら本当に手探りで苦労します。
今回の記事がEC-CUBE2担当者の助けになれば幸いです。
株式会社ONE WEDGE
【Serverlessで世の中をもっと楽しく】 ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion