質問 > フロント機能 > 特定の商品だけカート追加制御を行いたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
KimK |
投稿日時: 2025/4/4 16:21
対応状況: 開発中
|
半人前 ![]() ![]() 登録日: 2024/12/5 居住地: 投稿: 23 |
特定の商品だけカート追加制御を行いたい ▼テンプレート
[EC-CUBE]4.1 [現象]自分でクラスを作成しそのクラスではギフト商品のidを定義しています。detail.twigにて下記のコードを書いており、やりたいこととしてはgiftId(ギフト商品)の時だけカートに進むという選択肢のみにしたいです。 そこでその商品のIDとgiftIdを比較したいけどどうも商品のIdが上手く取れていないようでして、どうしたら取得できますか?どこかで使っていて再利用可能でしょうか?なぜそのような制御をかけるかというとギフト商品は1個しかカートに入れられないようにしたいけど、買い物を続けるボタンを押すと何度でもカートに入れられ、カートに進まないとバリデーションが発火しないからです。 【現状のコード】 {% if Product.id != giftId %} <div class="ec-modal"> <div class="ec-modal-overlay"> <div class="ec-modal-wrap"> <span class="ec-modal-close"><span class="ec-icon"><img src="{{ asset('assets/icon/cross-dark.svg') }}" alt=""/></span></span> <div id="ec-modal-header" class="text-center">{{ 'カートに追加しました。'|trans }}</div> <div class="ec-modal-box"> <div class="ec-role"> <span class="ec-inlineBtn--cancel">{{ 'お買い物を続ける'|trans }}</span> <a href="{{ url('cart') }}" class="ec-inlineBtn--action">{{ 'カートへ進む'|trans }}</a> </div> </div> </div> </div> </div> {% else %} <div class="ec-role"> <a href="{{ url('cart') }}" class="ec-inlineBtn--action">{{ 'カートへ進む'|trans }}</a> </div> {% endif %} |
h_tanaka |
投稿日時: 2025/4/4 16:31
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 2007 |
Re: 特定の商品だけカート追加制御を行いたい 「商品のIdが上手く取れていない」というのは、具体的にどういうことでしょうか?
Product Entity が定義されていないということでしょうか? 商品詳細ページの twig であれば、ProductController から Product Entity は渡されていると思います。 デバッグして確認してみてください。 php なら dump() で、 twig なら {{ dump() }} で引数に Entity なりのオブジェクトを指定すれば画面出力されます。
|
h_tanaka |
投稿日時: 2025/4/4 16:33
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 2007 |
Re: 特定の商品だけカート追加制御を行いたい カート追加のタイミングでカートのバリデーションを発火させることはできますよ。
商品詳細ページを開いてから、管理画面で商品の在庫を0にしたり非公開にしてから、カート追加してみてください。 バリデーション実行されると思います。
|
KimK |
投稿日時: 2025/4/4 16:59
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2024/12/5 居住地: 投稿: 23 |
Re: 特定の商品だけカート追加制御を行いたい スミマセン、勘違いしておりました。
どうしてもカートにてバリデーションを組み込んだのでカート追加時にモーダルを表示するのではなく、カートページに遷移させたいのです。下記のようになっているのですがgiftIdと一致する場合はカートに入れて進むになってます。 ここを押下したらカートに遷移して欲しいですおそらくJSが絡んでいるとは思いますが、JSを触らずに出来る方法があれば教えて欲しいです。 {% if Product.id == giftId %} <button type="submit" class="ec-blockBtn--action add-cart ec-btnRightArrow ec-btnwhiteArrow {{ totalPrice < 4000 ? 'disabled' : '' }}" title="{{ totalPrice < 4000 ? '4,000円以上購入された方のみとなります' : '' }}" data-totalPrice="{{ totalPrice }}"> <div> <img src="{{ asset('assets/img/common/icon_cart-white.svg') }}" alt=""> </div> {{ 'カートに入れて進む'|trans }} </button> {% else %} <button type="submit" class="ec-blockBtn--action add-cart ec-btnRightArrow ec-btnwhiteArrow"> <div> <img src="{{ asset('assets/img/common/icon_cart-white.svg') }}" alt=""> </div> {{ 'カートに入れる'|trans }} </button> {% endif %} |
h_tanaka |
投稿日時: 2025/4/4 17:04
対応状況: −−−
|
神 ![]() ![]() 登録日: 2016/7/22 居住地: 愛媛県 投稿: 2007 |
Re: 特定の商品だけカート追加制御を行いたい 手っ取り早いのは js でモーダル表示しているところをカートページに遷移するよう書き換える方法です。
js 触らず、ということでしたら、 js が発火しないようにすれば カートに入れるボタンで POST されるかと思います。
|
KimK |
投稿日時: 2025/4/4 17:09
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2024/12/5 居住地: 投稿: 23 |
Re: 特定の商品だけカート追加制御を行いたい 承知いたしました。
助言いただきありがとうございます。 助かりました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |