質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.98%

  • PHP

    17807questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • EC-CUBE

    262questions

    EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

EC-CUBEの重複エラーチェックについて

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 206

koda

score 1

前提・実現したいこと

ここに質問したいことを詳細に書いてください

EC-CUBEのカスタマイズを行っています。

同じ名前の営業所(name)が登録されたとき
同じ名前の営業所短縮名称(short_name)が登録されたとき

以上のときにエラーメッセージを出すプログラムを作りたいです。
似たような処理をしているメーカー登録ページからソースをコピーしてきたのですがエラーが出て動作しません。

発生している問題・エラーメッセージ

2017/10/27 09:13:58 [/admin/basis/office.php] Fatal error(E_ERROR): Call to a member function getByName() on null on [C:\xampp\htdocs\sarkland\eccube\data\class\pages\admin\basis\LC_Page_Admin_Basis_Office.php(255)] from ::1
login_id = sarkland(0)[pljjd1r4eq8jj27sae7iohgfd6]

該当のソースコード

    /**
     * 名前から営業所の情報を取得.
     *
     * @param  integer $name        営業所名
     * @param  boolean $has_deleted 削除されたメーカーも含む場合 true; 初期値 false
     * @return array
     */
    public function getByName($name, $has_deleted = false)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $where = 'name = ?';
        if (!$has_deleted) {
            $where .= ' AND del_flg = 0';
        }
        $arrRet = $objQuery->select('*', 'dtb_office', $where, array($name));

        return $arrRet[0];
     }

     public function getByShortName($shortname, $has_deleted = false)
     {
         $objQuery =& SC_Query_Ex::getSingletonInstance();
         $where = 'shortname = ?';
         if (!$has_deleted) {
             $where .= ' AND del_flg = 0';
         }
         $arrRet = $objQuery->select('*', 'dtb_office', $where, array($name));

         return $arrRet[0];
     }

    /**
     * 入力エラーチェック
     * @param SC_FormParam_Ex $objFormParam
     */
    public function lfCheckError(&$objFormParam)
    {
        $arrErr = $objFormParam->checkError();
        $post = $objFormParam->getHashArray();

        $objErr = new SC_CheckError_Ex($post);
        $objErr->doFunc(array('郵便番号', 'zip01', 'zip02'), array('ALL_EXIST_CHECK'));

        // 電話番号チェック
        $objErr->doFunc(array('TEL', 'tel01', 'tel02', 'tel03'), array('TEL_CHECK'));
        $objErr->doFunc(array('フリーダイヤル', 'toll_free01', 'toll_free02', 'toll_free03'), array('TEL_CHECK'));
        $objErr->doFunc(array('FAX', 'fax01', 'fax02', 'fax03'), array('TEL_CHECK'));

        if (!isset($arrErr['name'])) {
            $arrOffice = $objOffice->getByName($arrForm['name']);
            // 編集中のレコード以外に同じ名称が存在する場合
            if (
                    !SC_Utils_Ex::isBlank($arrOffice)
                    && $arrOffice['office_id'] != $arrForm['office_id']
                    && $arr['name'] == $arrForm['name']
            ) {
                $arrErr['name'] = '※ 既に同じ内容の登録が存在します。<br />';
            }
        }
        if (!isset($arrErr['short_name'])) {
            $arrOffice = $objOffice->getByShortName($arrForm['short_name']);

            // 編集中のレコード以外に同じ名称が存在する場合
            if (
                    !SC_Utils_Ex::isBlank($arrOffice)
                    && $arrOffice['office_id'] != $arrForm['office_id']
                    && $arr['short_name'] == $arrForm['short_name']
            ) {
                $arrErr['short_name'] = '※ 既に同じ内容の登録が存在します。<br />';
            }
        }
        return array_merge((array) $arrErr, (array) $objErr->arrErr);
    }

}

試したこと

課題に対してアプローチしたことを記載してください

補足情報(言語/FW/ツール等のバージョンなど)

より詳細な情報

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • miyahan

    2017/10/28 12:47

    EC-CUBEの重複をチェックする前に、質問が https://teratail.com/questions/98080 と重複しているので解消なさってください(どちらかを削除依頼するなど)

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.98%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    17807questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • EC-CUBE

    262questions

    EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。