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

公開日: : 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でどうやって出力するかの記載方法は上述の参考サイトをご参照下さい。

google ad

関連記事

記事はありませんでした

google ad

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

PAGE TOP ↑