質問 > フロント機能 > 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 居住地: 投稿: 3217 |
Re: MYページの購入履歴詳細ページで商品個々にカートボタンを付けたい 実際にソースを書いて試していないので、あくまで予想ですが、
AddCartTypeクラスからformを作り出してテンプレートに渡す必要があるのでは無いでしょうか? /src/Eccube/Controller/ProductController.php 105行目付近に商品一覧のテンプレートに渡す$formsという配列を作っている処理がありますので、 同じような記述でformを渡せるのではないかと思います。 (ここの記述を見る限り、コントローラー側では商品一覧画面にカート投入ボタンを設置しようとしてるように見えるのですが、 twigのほうに対応する記述が無いので、きちんとカート投入できるかどうかは分かりません) もし、良かったら、結果を教えていただけたらと思います。
|
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 居住地: 投稿: 3217 |
Re: MYページの購入履歴詳細ページで商品個々にカートボタンを付けたい うまく埋め込めたという事で安心しました。
トークン埋め込みの記述まで教えていただき、ありがとうございます。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |