バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

デザインテンプレート EC-CUBE3.0版が登場!
広告掲載について

サイト内検索

質問 > フロント機能 > MYページの購入履歴詳細ページで商品個々にカートボタンを付けたい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
pi-tan
投稿日時: 2017/3/16 12:38
対応状況: 開発中
新米
登録日: 2017/3/16
居住地:
投稿: 5
MYページの購入履歴詳細ページで商品個々にカートボタンを付けたい
▼テンプレート
[EC-CUBE] 3.0.13(新規インストール)
[レンタルサーバ] お名前.COM VPS
[OS] CentOS6?
[PHP] 5.5.28
[データベース] MySQL 5.6.35
[WEBサーバ] Apache/2.2.31
[ブラウザ] IE11
[導入プラグインの有無] Maker
[カスタマイズの有無]

MYページの購入履歴詳細ページにおいて、「再注文する」ボタンは標準でありますが、購入履歴にある個々の商品のみを再注文できるように「カート入れる」ボタンを追加したいと思います。

Mypage/history.twig の商品明細のあとの部分に以下のコードを追加して「カートに入れる」ボタンを作成しましたが、_token の値が適切でないのかカートに入らず、商品詳細ページが表示されます。
ちなみに、商品詳細ページの _token 値をそのまま記述すればカートに商品が入ります。商品詳細ページに埋め込まれている _token の値を取得するためにはどうすればいいでしょうか?ご教示いただければ幸いです。

以下は mypage/history.twig に追加したコードです。
標準のソースではProductClassをテンプレートには渡していませんが、
product_class_id から class_category_id を参照するためにカスタマイズしております。最終的にはhistory.twigのレンダリングをフックしてプラグインにしたいと思っています。

------------------------------------------------------------
<p id="reorder_button">
<form action="{{ url('product_detail', { id : OrderDetail.Product.id } ) }}" method="post" id="form1" name="form1">
<button type="submit" id="add-cart" class="btn btn-primary btn-block prevention-btn prevention-mask">カートに入れる</button>
<input type="hidden" id="mode" name="mode" value="add_cart" />
<input type="hidden" id="quantity" name="quantity" value="{{ OrderDetail.quantity }}" />
<input type="hidden" id="product_id" name="product_id" value="{{ OrderDetail.Product.id }}" />
<input type="hidden" id="product_class_id" name="product_class_id" value="{{ OrderDetail.ProductClass.id }}" />
{% for ProductClass in ProductClasses %}
{% if ProductClass.id == OrderDetail.ProductClass.id %}
{% if ProductClass.ClassCategory1.id is not empty %}
<input type="hidden" id="classcategory_id1" name="classcategory_id1" value="{{ ProductClass.ClassCategory1.id }}">
{% endif %}
{% if ProductClass.ClassCategory2.id is not empty %}
<input type="hidden" id="classcategory_id2" name="classcategory_id2" value="{{ ProductClass.ClassCategory2.id }}">
{% endif %}
{% endif %}
{% endfor %}
<input type="hidden" id="_token" name="_token" value="{{ csrf_token() }}" />
</form>
</p>

-----------------------------------------------------------

よろしく、お願いします。














[現象] 再現手順や、どのような現象が発生しているかなど、具体的に
468
投稿日時: 2017/3/17 9:09
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 402
Re: MYページの購入履歴詳細ページで商品個々にカートボタンを付けたい
実際にソースを書いて試していないので、あくまで予想ですが、
AddCartTypeクラスからformを作り出してテンプレートに渡す必要があるのでは無いでしょうか?

/src/Eccube/Controller/ProductController.php 105行目付近に商品一覧のテンプレートに渡す$formsという配列を作っている処理がありますので、
同じような記述でformを渡せるのではないかと思います。
(ここの記述を見る限り、コントローラー側では商品一覧画面にカート投入ボタンを設置しようとしてるように見えるのですが、
twigのほうに対応する記述が無いので、きちんとカート投入できるかどうかは分かりません)

もし、良かったら、結果を教えていただけたらと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
■360°画像ビューワーimg360
■ECCUBE技術資料blog

pi-tan
投稿日時: 2017/3/18 7:45
対応状況: −−−
新米
登録日: 2017/3/16
居住地:
投稿: 5
Re: MYページの購入履歴詳細ページで商品個々にカートボタンを付けたい
468様

ご回答ありがとうございます。
ご指摘の通りカートに追加するためのフォームデータを作成してテンプレートに
渡してやることでトークンを付けることができました。

-----------------------------------------------------------
// カート用フォームデータ作成
$builder = $this->app['form.factory']->createNamedBuilder('', 'add_cart', null, array(
'product' => $Product,
'allow_extra_fields' => true,
));
$form = $builder->getForm();

// この時点では$formには_tokenは生成されていませんが
// 下記のようにFormViewを作成することで _token が生成されますので
// これをテンプレートに渡します。
$parameters = $event->getParameters();
$parameters['form'] = $form->createView();
$event->setParameters($parameters);

-----------------------------------------------------------

テンプレートでは以下のコードでトークンを埋め込むことができました。

<input type="hidden" id="_token" name="_token" value="{{ form._token.vars.value }}" />

以上です。


468
投稿日時: 2017/3/18 11:43
対応状況: −−−
仙人
登録日: 2008/10/26
居住地:
投稿: 402
Re: MYページの購入履歴詳細ページで商品個々にカートボタンを付けたい
うまく埋め込めたという事で安心しました。
トークン埋め込みの記述まで教えていただき、ありがとうございます。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
■360°画像ビューワーimg360
■ECCUBE技術資料blog

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

 

ログイン


EC-CUBEペイメント

統計情報

総メンバー数は19,119名です
総投稿数は79,892件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1618
4
yuh
1313
5
red
1027
6
fukap
907
7
shutta
827
8 ramrun 789
9
tsuji
778
10
tao_s
646


ネットショップの壺

EC-CUBEガイドブック
Copyright© LOCKON CO.,LTD. All Rights Reserved.