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の機能やデザインのカスタマイズ承ります。