新規ページを追加するとSC_Utils_Ex::sfChangeCheckBox()のエラーが出るときの対処法

EC-CUBEで新規ページを追加するときに、次のようなエラーが出ることがあります。

Fatal error: Call to undefined method SC_Utils_Ex::sfChangeCheckBox() in /xxxx/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php on line 270

これは過去に存在した SC_Utils_Ex::sfChangeCheckBox() がなくなっているためで、バージョン2.11.0で起こります。

バージョン2.11.1では修正されているとのこと。

対処法としては、バージョン2.11.1以上にするか、SC_Utils_Ex::sfChangeCheckBox()を使用しないように変更します。

SC_Utils_Ex::sfChangeCheckBox()が書かれているコードは下記の部分になります。

/data/class/pages/admin/design/LC_Page_Admin_Design_MainEdit.php

    function lfGetUpdData($device_type_id, $page_id, $page_name, $filename, $header_chk, $footer_chk) {
        $arrUpdData = array(
            'header_chk'    => SC_Utils_Ex::sfChangeCheckBox($header_chk),  // ヘッダー使用
            'footer_chk'    => SC_Utils_Ex::sfChangeCheckBox($footer_chk),  // フッター使用
            'update_url'    => $_SERVER['HTTP_REFERER'],                    // 更新URL
            'update_date'   => 'now()',
        );

        // ベースデータの場合には変更しない。
        if (!$this->objLayout->lfCheckBaseData($page_id, $device_type_id)) {
            $arrUpdData['page_name']    = $page_name;
            $arrUpdData['url']          = $filename . '.php';
            $arrUpdData['filename']     = $filename; // 拡張子を付加しない
        }

        return $arrUpdData;
    }

ここを修正する方法と、class_extends側にコードを追加する方法があります。
一概にどちらがいいともいえません。
バージョン2.11.0を使い続けるならclass_extends側に、安定版が出るごとにアップグレードするならclass側に書くべきだと思います。

/data/class_extends/page_extends/admin/design/LC_Page_Admin_Design_MainEdit_Ex.php

    function lfGetUpdData($device_type_id, $page_id, $page_name, $filename, $header_chk, $footer_chk) {
        $arrUpdData = array(
            'header_chk'    => $header_chk,  // ヘッダー使用
            'footer_chk'    => $footer_chk,  // フッター使用
            'update_url'    => $_SERVER['HTTP_REFERER'],                    // 更新URL
            'update_date'   => 'now()',
        );

        // ベースデータの場合には変更しない。
        if (!$this->objLayout->lfCheckBaseData($page_id, $device_type_id)) {
            $arrUpdData['page_name']    = $page_name;
            $arrUpdData['url']          = $filename . '.php';
            $arrUpdData['filename']     = $filename; // 拡張子を付加しない
        }

        return $arrUpdData;
    }

関連記事

スポンサーリンク

traceroute ホストまでの経路を調べる

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る