バージョン選択

フォーラム

メニュー

オンライン状況

41 人のユーザが現在オンラインです。 (32 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 41
もっと...

サイト内検索

質問 > フロント機能 > ゲスト購入時もフロントで帳票出力したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
h_tanaka
投稿日時: 2018/3/27 10:26
対応状況: 解決済
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
ゲスト購入時もフロントで帳票出力したい
EC-CUBE3.0.15

こちらのトピックにて、帳票出力プラグインをフロントページから実行することができました。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=20124&forum=11

ただ、会員ログインしている状態では正常に動作したのですが、ゲストの場合にうまくいきません。

新規ページを作成し、領収書発行ボタンを設置しています。
ゲストの場合に領収書発行ボタンを押すと、会員ログインページに遷移されてしまいます。
このときのURLは、http://xxxxx/mypage/history/download_receipt/25 のままでした。
デバッグしてみましたが、download_receipt() メソッドまで実行されていないようでした。
どこかのタイミングでバックでログインチェック処理でも走っているのでしょうか?

app/template/default/Inquiry/order.twig
                <form role="form" name="order_pdf_form" id="order_pdf_form" method="post" action="{{ url('plugin_order_pdf_download_receipt', { orderId : Order.id }) }}">
                    <div class="btn_group col-sm-4">
                        <button class="btn btn-info btn-block" onclick="document.order_pdf_form.submit();">領収書発行
                        </button>
                    </div>
                </form>


app/Plugin/OrderPdf/ServiceProvider/OrderPdfServiceProvider.php
        // 領収書PDFファイルダウンロード
        $app->match('/mypage/history/download_receipt/{orderId}', '\\Plugin\\OrderPdf\\Controller\\OrderPdfController::download_receipt')
            ->bind('plugin_order_pdf_download_receipt')->assert('orderId', '\d+');


app/Plugin/OrderPdf/Controller/OrderPdfController.php
    /**
     * フロントのマイページ購入履歴詳細で領収書発行ボタンクリック時の処理
     * 領収書のPDFをダウンロードする.
     *
     * @param Application $app
     * @param Request     $request
     *
     * @return Response
     *
     * @throws BadRequestHttpException
     */
    public function download_receipt(Application $app, Request $request, $orderId)
    {
        $Order = $app['eccube.repository.order']->find($orderId);
        if ($Order == null) {
            throw new BadRequestHttpException();
        }

        // サービスの取得
        /* @var OrderPdfService $service */
        $service = $app['orderpdf.service.order_pdf'];

        $arrData = array(
            'ids' => $Order->getId(),
            'issue_date' => new \DateTime(),
            'title' => '領収書',
            'message1' => 'このたびはお買上げいただきありがとうございます。',
            'message2' => '下記の内容にて納品させていただきます。',
            'message3' => 'ご確認くださいますよう、お願いいたします。',
            'note1' => '',
            'note2' => '',
            'note3' => '',
            'tyohyo_type' => '4',
            'ryosyu_no' => $Order->getOrderCode(),
            'ryosyu_show' => '2',
            'ryosyu_tadasi' => '商品代として',
            'contact_show' => '2',
        );

        // 購入情報からPDFを作成する
        $status = $service->makePdf($arrData);

        // 異常終了した場合の処理
        if (!$status) {
            log_info('Unable to create pdf files! Process have problems!');

            return $app->redirect($app->url('mypage_history', array('id' => $orderId)));
        }

        // ダウンロードする
        $response = new Response(
            $service->outputPdf(),
            200,
            array('content-type' => 'application/pdf')
        );

        // レスポンスヘッダーにContent-Dispositionをセットし、ファイル名をreceipt.pdfに指定
        $response->headers->set('Content-Disposition', 'attachment; filename="'.$service->getPdfFileName().'"');
        log_info('ReceiptPdf download success!', array('Order ID' => implode(',', $this->getIds($request))));

        return $response;
    }


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

h_tanaka
投稿日時: 2018/3/27 10:46
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: ゲスト購入時もフロントで帳票出力したい
自己解決しました。

領収書ダウンロード処理を実行するURLから、mypage/history を削除することでゲスト購入時も動作するようになりました。
mypage/ がURL内にあるとログインチェック処理が走るのでしょうか・・。
なぜだかわかる方いらっしゃれば教えていただけると幸いです。

app/Plugin/OrderPdf/ServiceProvider/OrderPdfServiceProvider.php

【変更前】
        // 領収書PDFファイルダウンロード
        $app->match('/mypage/history/download_receipt/{orderId}', '\\Plugin\\OrderPdf\\Controller\\OrderPdfController::download_receipt')
            ->bind('plugin_order_pdf_download_receipt')->assert('orderId', '\d+');


【変更前】
        // 領収書PDFファイルダウンロード
        $app->match('/download_receipt/{orderId}', '\\Plugin\\OrderPdf\\Controller\\OrderPdfController::download_receipt')
            ->bind('plugin_order_pdf_download_receipt')->assert('orderId', '\d+');


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

umebius
投稿日時: 2018/3/27 12:18
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: ゲスト購入時もフロントで帳票出力したい
h_tanaka様

引用:
mypage/ がURL内にあるとログインチェック処理が走るのでしょうか・・。



上記のmypageから始まるURLにログインチェック処理が走る理由はこちらの記事にあるように$app[‘security.access_rules’]が/mypage以下で設定されているためかと思います。


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

h_tanaka
投稿日時: 2018/3/27 12:22
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1644
Re: ゲスト購入時もフロントで帳票出力したい
umebius様

なるほど、このような機能があるのですね。
勉強になります。
ご回答ありがとうございました!


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,802名です
総投稿数は109,972件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1644
8
red
1570
9
mcontact
1289
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.