【EC-CUBE3】注文完了ページで注文した商品情報を取得する

EC-CUBE3で有料のプラグインを使わずにgoogleアナリティクスの拡張Eコマースに対応するべく、下記のサイトを参考にしつつやりましたが、分からない部分があったのでメモ。
EC-CUBE3いじれる人向けです。

広告

参考サイト:EC-CUBE3 拡張eコマース設定

商品購入時のshopping/complete.twigでは商品情報が取得できないと思いますので、Controllerにフックを仕込んで商品情報を取得してあげる必要があります。

この部分が、なかなか分からず、調べるのに時間がかかった…
下記のような感じで注文完了ページ(shopping/complete.twig)で、注文した商品情報を取得できるようになります。

src/Eccube/Controller/ShoppingController.php の300行目あたり

/**
 * 購入完了画面表示
 */
public function complete(Application $app, Request $request)
{
    // 受注IDを取得
    $orderId = $app['session']->get($this->sessionOrderKey);

    $Order = $app['eccube.repository.order']->find($orderId);    //ここ追加

    $event = new EventArgs(
        array(
            'orderId' => $orderId,
            'Order' => $Order,    //ここ追加
        ),
        $request
    );
    $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_SHOPPING_COMPLETE_INITIALIZE, $event);

    if ($event->getResponse() !== null) {
        return $event->getResponse();
    }

    // 受注に関連するセッションを削除
    $app['session']->remove($this->sessionOrderKey);
    $app['session']->remove($this->sessionMultipleKey);
    // 非会員用セッション情報を空の配列で上書きする(プラグイン互換性保持のために削除はしない)
    $app['session']->set($this->sessionKey, array());
    $app['session']->set($this->sessionCustomerAddressKey, array());

    log_info('購入処理完了', array($orderId));

    return $app->render('Shopping/complete.twig', array(
        'orderId' => $orderId,
        'Order' => $Order,    //ここ追加
    ));
}

こんな感じでやると、注文完了ページで注文した商品情報を取得できるようになります。
(「ここはいらない」的な部分もあるかもしれない…詳しい方、ご指摘下さい。)

取得してきた注文情報をtwigでどうやって出力するかの記載方法は上述の参考サイトをご参照下さい。

お問い合わせ

記事の感想・不明点・リクエストやWEBサイト制作の困りごとなど、お気軽にお寄せ下さい。

お問い合わせ

広告
Fundemicの最新情報

Fundemicの最新情報

FundemicのFacebookページでは、
制作実績とTECHブログの最新情報を掲載しております。

CTR IMG