バージョン選択
フォーラム
メニュー
オンライン状況
|
|
43 人のユーザが現在オンラインです。 (31 人のユーザが フォーラム を参照しています。) |
|
|
> 管理機能 > 【2_11-dev】への「会社名」他の項目追加処置に於いて。。。 |
|
管理機能
投稿者 |
スレッド |
ゲスト |
投稿日時: 2011/5/19 12:33
対応状況: −−−
|
|
【2_11-dev】への「会社名」他の項目追加処置に於いて。。。 フロント画面に関しては追加処置を完了し、 現在、管理画面への追加処置を行なっているのですが、「顧客マスタ」で、躓いています。
『version-2_11-dev/data/class_extends/』
SC_Customer_Ex.php
require_once CLASS_REALDIR . 'SC_CustomerList.php';
class SC_CustomerList_Ex extends SC_CustomerList {
}
を
require_once CLASS_REALDIR . 'SC_CustomerList.php';
class SC_CustomerList_Ex extends SC_CustomerList {
    function SC_CustomerList($array, $mode = '') {
        parent::SC_SelectSql($array);
        $masterData = new SC_DB_MasterData_Ex();
        $objDb = new SC_Helper_DB_Ex();
        $dbFactory = SC_DB_DBFactory_Ex::getInstance();
        if($mode == "") {
            // 会員本登録会員で削除していない会員
            $this->setWhere("status = 2 AND del_flg = 0 ");
            // 登録日を示すカラム
            $regdate_col = 'dtb_customer.update_date';
        }
        if($mode == 'customer') {
            $this->setWhere( " del_flg = 0 ");
            // 登録日を示すカラム
            $regdate_col = 'dtb_customer.update_date';
        }
        // 顧客ID
        if (!isset($this->arrSql['search_customer_id'])) $this->arrSql['search_customer_id'] = "";
        if ( strlen($this->arrSql['search_customer_id']) > 0 ) {
            $this->setWhere( "customer_id =  ?" );
            $this->arrVal[] = $this->arrSql['search_customer_id'];
        }
        // 名前
        if (!isset($this->arrSql['search_name'])) $this->arrSql['search_name'] = "";
        if ( strlen($this->arrSql['search_name']) > 0 ) {
            $this->setWhere("(" . $dbFactory->concatColumn(array("name01", "name02")) . " LIKE ?)" );
            $searchName = $this->addSearchStr($this->arrSql['search_name']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchName);
        }
        // 名前(カナ)
        if (!isset($this->arrSql['search_kana'])) $this->arrSql['search_kana'] = "";
        if ( strlen($this->arrSql['search_kana']) > 0 ) {
            $this->setWhere("(" . $dbFactory->concatColumn(array("kana01", "kana02")) . " LIKE ?)" );
            $searchKana = $this->addSearchStr($this->arrSql['search_kana']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchKana);
        }
        
        // & hideki-s '11.05.18
        // 会社名
        if (!isset($this->arrSql['search_company_name'])) $this->arrSql['search_company_name'] = "";
        if ( strlen($this->arrSql['search_company_name']) > 0 ) {
            $this->setWhere( "company_name LIKE ?" );
            $searchCompanyName = $this->addSearchStr($this->arrSql['search_company_name']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchCompanyName);
        }
        
        // 部署名
        if (!isset($this->arrSql['search_section_name'])) $this->arrSql['search_section_name'] = "";
        if ( strlen($this->arrSql['search_section_name']) > 0 ) {
            $this->setWhere( "section_name LIKE ?" );
            $searchSectionName = $this->addSearchStr($this->arrSql['search_section_name']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchSectionName);
        }
        
        // (代表)機番
        if (!isset($this->arrSql['search_example_kiban'])) $this->arrSql['search_example_kiban'] = "";
        if ( strlen($this->arrSql['search_example_kiban']) > 0 ) {
            $this->setWhere( "example_kiban LIKE ?" );
            $searchExampleKiban = $this->addSearchStr($this->arrSql['search_example_kiban']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchExampleKiban);
        }
        // hideki-s & '11.05.18
        
        // 都道府県
        if (!isset($this->arrSql['search_pref'])) $this->arrSql['search_pref'] = "";
        if ( strlen($this->arrSql['search_pref']) > 0 ) {
            $this->setWhere( "pref = ?" );
            $this->arrVal[] = $this->arrSql['search_pref'];
        }
.....
}
として「function SC_CustomerList($array, $mode = '') 」をオーバライドしたいのですが、無視される様です。 引用: とあるので、なんとか実現出来ないかと試案しているのですが、現在の小生の力量では、打開策が見出せずにいます。 何方か、お知恵を拝借出来る方は見えませんでしょうか? 小生が追った道筋を以下に記します。長いです。。。
1.『version-2_11-dev/html/admin/customer/』
index.php
// {{{ requires
require_once '../require.php';
require_once CLASS_EX_REALDIR . 'page_extends/admin/customer/LC_Page_Admin_Customer_Ex.php';
// }}}
// {{{ generate page
$objPage = new LC_Page_Admin_Customer_Ex();
register_shutdown_function(array($objPage, 'destroy'));
$objPage->init();
$objPage->process();
↓
2.『version-2_11-dev/data/class_extends/page_extends/admin/customer/』
LC_Page_Admin_Customer_Ex.php
class LC_Page_Admin_Customer_Ex extends LC_Page_Admin_Customer {
    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        parent::process();
    }
↓
3.『version-2_11-dev/data/class/pages/admin/customer/』
LC_Page_Admin_Customer.php
    function action() {
        // モードによる処理切り替え
        switch ($this->getMode()) {
        case 'search':
            list($this->tpl_linemax, $this->arrData, $this->objNavi) = $this->lfDoSearch($objFormParam->getHashArray());
            $this->arrPagenavi = $this->objNavi->arrPagenavi;
            break;
「$this->lfDoSearch($objFormParam->getHashArray())」
↓
    /**
     * 顧客一覧を検索する処理
     *
     * @param array $arrParam 検索パラメーター連想配列
     * @return array( integer 全体件数, mixed 顧客データ一覧配列, mixed SC_PageNaviオブジェクト)
     */
    function lfDoSearch($arrParam) {
        return SC_Helper_Customer_Ex::sfGetSearchData($arrParam);
    }
「SC_Helper_Customer_Ex::sfGetSearchData($arrParam)」
↓
4.『version-2_11-dev/data/class_extends/helper_extends/』
SC_Helper_Customer_Ex.php
(追加処置を行なっています。)
class SC_Helper_Customer_Ex extends SC_Helper_Customer {
    /**
     * 会員共通
     *
     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
     * @access public
     * @return void
     */
    function sfCustomerCommonParam (&$objFormParam) {
        $objFormParam->addParam("お名前(フリガナ・名)", 'kana02', STEXT_LEN, 'CKV', array("EXIST_CHECK", "NO_SPTAB", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK", "KANA_CHECK"));
        // & hideki-s '11.05.11
        $objFormParam->addParam("会社名", 'company_name', MTEXT_LEN, 'aKV', array("EXIST_CHECK", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
        $objFormParam->addParam("部署名", 'section_name', MTEXT_LEN, 'aKV', array("EXIST_CHECK", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
        $objFormParam->addParam("(代表)機番", 'example_kiban', MTEXT_LEN, 'aKV', array("EXIST_CHECK", "SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
        // hideki-s & '11.05.11
        
        $objFormParam->addParam("郵便番号1", "zip01", ZIP01_LEN, 'n', array("EXIST_CHECK", "SPTAB_CHECK" ,"NUM_CHECK", "NUM_COUNT_CHECK"));
    }
    
    /**
     * 顧客検索パラメーター(管理画面用)
     *
     * @param SC_FormParam $objFormParam SC_FormParam インスタンス
     * @access public
     * @return void
     */
    function sfSetSearchParam(&$objFormParam) {
        $objFormParam->addParam('都道府県', 'search_pref', INT_LEN, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK"));
        // & hideki-s '11.05.17
        $objFormParam->addParam("会社名", 'search_company_name', MTEXT_LEN, 'KVa', array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
        $objFormParam->addParam("部署名", 'search_section_name', MTEXT_LEN, 'KVa', array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
        $objFormParam->addParam("(代表)機番", 'search_example_kiban', MTEXT_LEN, 'KVa', array("SPTAB_CHECK" ,"MAX_LENGTH_CHECK"));
        // hideki-s & '11.05.17
        
        $objFormParam->addParam('誕生日(開始年)', 'search_b_start_year', 4, 'n', array("NUM_CHECK","MAX_LENGTH_CHECK"));
    }
}
↓
5.『version-2_11-dev/data/class/helper/』
SC_Helper_Customer.php
    /**
     * 顧客一覧検索をする処理(ページング処理付き、管理画面用共通処理)
     *
     * @param array $arrParam 検索パラメーター連想配列
     * @return array( integer 全体件数, mixed 顧客データ一覧配列, mixed SC_PageNaviオブジェクト)
     */
    function sfGetSearchData($arrParam) {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objSelect = new SC_CustomerList_Ex($arrParam, 'customer');
        $page_max = SC_Utils_Ex::sfGetSearchPageMax($arrParam['search_page_max']);
        $disp_pageno = $arrParam['search_pageno'];
        if($disp_pageno == 0) {
            $disp_pageno = 1;
        }
        $offset = intval($page_max) * (intval($disp_pageno) - 1);
        $objSelect->setLimitOffset($page_max, $offset);
        $arrData = $objQuery->getAll($objSelect->getList(), $objSelect->arrVal);
        // 該当全体件数の取得
        $linemax = $objQuery->getOne($objSelect->getListCount(), $objSelect->arrVal);
        // ページ送りの取得
        $objNavi = new SC_PageNavi_Ex($arrParam['search_pageno'],
                                    $linemax,
                                    $page_max,
                                    'fnNaviSearchOnlyPage',
                                    NAVI_PMAX);
        return array($linemax, $arrData, $objNavi);
    }
「$objSelect = new SC_CustomerList_Ex($arrParam, 'customer')
$objSelect->arrVal」
6.『version-2_11-dev/data/class_extends/』
SC_Customer_Ex.php
require_once CLASS_REALDIR . 'SC_CustomerList.php';
class SC_CustomerList_Ex extends SC_CustomerList {
}
↑にて「function SC_CustomerList($array, $mode = '') 」をオーバライドしたいのですが、無視されてしまうので、 ↓の様に、今は、クラスを直修正しています。
7.『version-2_11-dev/data/class/』
SC_CustomerList.php
class SC_CustomerList extends SC_SelectSql_Ex {
    var $arrColumnCSV;
    function SC_CustomerList($array, $mode = '') {
        parent::SC_SelectSql($array);
        $masterData = new SC_DB_MasterData_Ex();
        $objDb = new SC_Helper_DB_Ex();
        $dbFactory = SC_DB_DBFactory_Ex::getInstance();
        if($mode == "") {
            // 会員本登録会員で削除していない会員
            $this->setWhere("status = 2 AND del_flg = 0 ");
            // 登録日を示すカラム
            $regdate_col = 'dtb_customer.update_date';
        }
        if($mode == 'customer') {
            $this->setWhere( " del_flg = 0 ");
            // 登録日を示すカラム
            $regdate_col = 'dtb_customer.update_date';
        }
        // 顧客ID
        if (!isset($this->arrSql['search_customer_id'])) $this->arrSql['search_customer_id'] = "";
        if ( strlen($this->arrSql['search_customer_id']) > 0 ) {
            $this->setWhere( "customer_id =  ?" );
            $this->arrVal[] = $this->arrSql['search_customer_id'];
        }
        // 名前
        if (!isset($this->arrSql['search_name'])) $this->arrSql['search_name'] = "";
        if ( strlen($this->arrSql['search_name']) > 0 ) {
            $this->setWhere("(" . $dbFactory->concatColumn(array("name01", "name02")) . " LIKE ?)" );
            $searchName = $this->addSearchStr($this->arrSql['search_name']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchName);
        }
        // 名前(カナ)
        if (!isset($this->arrSql['search_kana'])) $this->arrSql['search_kana'] = "";
        if ( strlen($this->arrSql['search_kana']) > 0 ) {
            $this->setWhere("(" . $dbFactory->concatColumn(array("kana01", "kana02")) . " LIKE ?)" );
            $searchKana = $this->addSearchStr($this->arrSql['search_kana']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchKana);
        }
        
        // & hideki-s '11.05.18
        // 会社名
        if (!isset($this->arrSql['search_company_name'])) $this->arrSql['search_company_name'] = "";
        if ( strlen($this->arrSql['search_company_name']) > 0 ) {
            $this->setWhere( "company_name LIKE ?" );
            $searchCompanyName = $this->addSearchStr($this->arrSql['search_company_name']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchCompanyName);
        }
        
        // 部署名
        if (!isset($this->arrSql['search_section_name'])) $this->arrSql['search_section_name'] = "";
        if ( strlen($this->arrSql['search_section_name']) > 0 ) {
            $this->setWhere( "section_name LIKE ?" );
            $searchSectionName = $this->addSearchStr($this->arrSql['search_section_name']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchSectionName);
        }
        
        // (代表)機番
        if (!isset($this->arrSql['search_example_kiban'])) $this->arrSql['search_example_kiban'] = "";
        if ( strlen($this->arrSql['search_example_kiban']) > 0 ) {
            $this->setWhere( "example_kiban LIKE ?" );
            $searchExampleKiban = $this->addSearchStr($this->arrSql['search_example_kiban']);
            $this->arrVal[] = mb_ereg_replace("[ ]+","",$searchExampleKiban);
        }
        // hideki-s & '11.05.18
        
        // 都道府県
        if (!isset($this->arrSql['search_pref'])) $this->arrSql['search_pref'] = "";
        if ( strlen($this->arrSql['search_pref']) > 0 ) {
            $this->setWhere( "pref = ?" );
            $this->arrVal[] = $this->arrSql['search_pref'];
        }
.....
|
|
|
patapata |
投稿日時: 2011/5/19 16:34
対応状況: −−−
|
仙人 登録日: 2010/7/7 居住地: 神奈川県 投稿: 502 |
Re: 【2_11-dev】への「会社名」他の項目追加処置に於いて。。。 要点をまとめて、読みやすいように書きましょう。 SC_CustomerList.phpの function SC_CustomerList($array, $mode = '') をExクラスでオーバライドしたいのにうまくできません。 と読み解きました。 (途中のコードは面倒なので読んでません。外してたらごめんなさい) PHPあんま詳しくないですがコンストラクタだからじゃないですかね。 ためしに、 SC_CustomerList.phpに Initializeとかって関数作って、コンストラクタでやってる処理 全部移動させて・・・ Exクラスでそれをオーバライドしてみれば? ----------------- SC_CustomerList.php
class SC_CustomerList extends SC_SelectSql_Ex {
function SC_CustomerList($array, $mode = '') {
$this->initialize($array, $mode);
}
function initialize($array, $mode = ''){
//コンストラクタにあった処理
}
}
SC_CustomerList_Ex.php
class SC_CustomerList_Ex extends SC_CustomerList {
function initialize($array, $mode = ''){
//適当に代える
}
}
|
|
|
ゲスト |
投稿日時: 2011/5/19 17:38
対応状況: −−−
|
|
Re: 【2_11-dev】への「会社名」他の項目追加処置に於いて。。。 引用: patapataさんは書きました: 要点をまとめて、読みやすいように書きましょう。
は、一応、(これでも、、、)冒頭にまとめたつもりでしたが、、、 引用: SC_CustomerList.phpの function SC_CustomerList($array, $mode = '') をExクラスでオーバライドしたいのにうまくできません。 と読み解きました。 はい、合ってます。 引用: PHPあんま詳しくないですがコンストラクタだからじゃないですかね。
ためしに、 SC_CustomerList.phpに Initializeとかって関数作って、コンストラクタでやってる処理 全部移動させて・・・ Exクラスでそれをオーバライドしてみれば? ありがとうございます。試してみます。 が、巧くいったとして「リファクタリングガイドライン」に添っているのかどうか、、、 その辺も含めて、引き続き「お知恵」募集中です。。。
|
|
|
Masashige |
投稿日時: 2011/5/19 18:07
対応状況: −−−
|
長老 登録日: 2009/4/1 居住地: 投稿: 200 |
Re: 【2_11-dev】への「会社名」他の項目追加処置に於いて。。。 確か、
SC_Customer_Ex.phpには
function SC_Customer_Ex()
で作らなきゃいけなかった気が。
|
|
|
ゲスト |
投稿日時: 2011/5/19 19:33
対応状況: −−−
|
|
Re: 【2_11-dev】への「会社名」他の項目追加処置に於いて。。。 引用: Masashigeさんは書きました: 確か、
SC_Customer_Ex.phpには
function SC_Customer_Ex()
で作らなきゃいけなかった気が。
ありがとうございます、、、この意味については、調べてみます。。。 で、問題は「SC_CustomerList_Ex.php」でして。。。 1.SC_Customer_Ex.phpは require_once CLASS_REALDIR . 'SC_Customer.php'; class SC_Customer_Ex extends SC_Customer { } で、SC_Customer.phpが class SC_Customer { ... となっており、こちらは、巧くオーバライド出来てます。 2.SC_CustomerList_Ex.phpも require_once CLASS_REALDIR . 'SC_Customer.php'; class SC_Customer_Ex extends SC_Customer { } なのですが、SC_CustomerList.phpが class SC_CustomerList extends SC_SelectSql_Ex { ... で、はるか遠くから「$this->arrVal」を呼んでいまして、 ここのところが「???」なのです。。。
|
|
|
|
統計情報
総メンバー数は88,875名です
総投稿数は110,000件です
|