LoginSignup
0
0

More than 1 year has passed since last update.

EC-cube2の開発・修正方法メモ

Last updated at Posted at 2022-06-09

Laravelと比較しながらEC-cube2を読み解くメモ。

アクションコントローラとURLの関係

修正対象のurlからコントローラを探すには

例えばURLが
http://example.local.com/admin/order/edit.php?
の場合だと

LC_Page_Admin_Order_Edit_EX.php

になる。
Laravelのようにアクションごとにメソッドは分かれておらず、一旦全部actionメソッドに集約されたあと、
actionメソッド内で一覧表示・新規作成・編集・検索・削除 などのモードを振り分けている。

ここに記述がない場合は継承元を直接編集してしまっているので_EXのない方を修正する。(data/classディレクトリはLaravelのvendorディレクトリに相当するフレームワーク本体なので絶対に変更してはいけないが、そんな綺麗な状態で残っている案件の方がレアケースだと思われる。)

HTMLテンプレートの探し方

上記コントローラの

init関数で $this->tpl_mainpage とか書いてあるあたりでSmartyテンプレートを指定している場合が多い。
(laravel の return viewの引数相当)
ただし処理の途中で書き換えているパターンもある。

マスターデータの取得方法

mtb_ プレフィックスを持つマスタテーブルのデータを取得する場合、以下のようにしてまるっと取得できる。
EloquentのようなORMはなく、DBのデータは全部配列で取得することになる。

        $masterData = new SC_DB_MasterData_Ex();
        $this->arrPref = $masterData->getMasterData('mtb_pref');

入力フォームのセット

入力フォームの値を出し入れするには
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']);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0