バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
be-s
投稿日時: 2021/3/12 10:59
対応状況: −−−
一人前
登録日: 2016/2/2
居住地: manchester
投稿: 84
カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
EC-CUBE] 4.0.4
[レンタルサーバ] AWS
[OS] Linux
[PHP] 7.3.14
[データベース] MySQL 5.7.28
[WEBサーバ] Apache/2.4.25
[ブラウザ] Chrome
[現象]
カート追加時に商品のIDではなく
商品SKUを設定する。
product_codeを指定して別のプレーンなHTMLからカート追加おこないたいです。

ProductController.phpで指定されている。
カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法ってございませんか?

宜しくお願いいたします。
tsuji
投稿日時: 2021/3/12 11:07
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 936
Re: カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
be-s 様

idをproduct_codeに変えただけでは数値判定が行われてしまい
うまくいかないということであれば、
UserDataControllerで文字列をrouteに入れる方法が記載されています。

そちらを参考にできるかと思います。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

be-s
投稿日時: 2021/3/12 13:12
対応状況: −−−
一人前
登録日: 2016/2/2
居住地: manchester
投稿: 84
Re: カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
tsuji様
いつもありがとうございます。

UserDataController確認し
route設定の書き方変えて

文字列での取得できました

ProductController.php
function addCart内での

productCodeからProductIdの求め方は、ご存じでしょうか?

お手数おかけしてございません。
どうかよろしくお願いいたします。
tsuji
投稿日時: 2021/3/12 13:48
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 936
Re: カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
be-s 様

dtb_product_class内のproduct_codeを検索し
該当行のproduct_idを取得する感じです。

ProductClassRepositoryを使って取得するイメージです。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

be-s
投稿日時: 2021/3/12 16:30
対応状況: −−−
一人前
登録日: 2016/2/2
居住地: manchester
投稿: 84
Re: カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
tsuji様
ご返答ありがとうございます。

\src\Eccube\Controller\ProductController.phpで


use Eccube\Repository\ProductClassRepository;


class ProductController extends AbstractController{
    /**
     * @var ProductClassRepository
     */
    protected $productClassRepository;

    public function __construct(
        ProductClassRepository $productClassRepository,
    ) {
        $this->productClassRepository = $productClassRepository;
    }
}






上記を追加後に


/**
     * カートに追加.
     *
     * @Route("/products/add_cart/{id}", name="product_add_cart", methods={"POST"}, requirements={"id" = "([0-9a-zA-Z_\-]+\/?)+(?<!\/)"})
     */
    public function addCart(Request $request, Product $Product)
    {
}



内に


$ProductClass = $productClassRepository->findOneBy(['ProductCode' => '※対象の一位のSKU']);

を設定したのですがうまくとれません。

書き方が間違っていますでしょうか?
tsuji
投稿日時: 2021/3/15 9:48
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 936
Re: カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
be-s 様

まず、開発の際は↓のようにデバッグモードでされるとエラーが出てくるのでわかりやすいかと思います。
https://doc4.ec-cube.net/debug_mode

コードを見てみますとあと一歩という印象です。
以下の修正を行う前にデバッグモードにしてどういうエラーが出ているかを確認し、
一つずつ直して表示すると今後に役立つかと思います。


↓ですが、おそらくこのままだと画面が白くなっているので
お気づきと思いますが、$productClassRepositoryのあとの「,」は不要です。

    public function __construct(
        ProductClassRepository $productClassRepository,
    ) {


↓ですが、事前に$productClassRepositoryに$this->productClassRepositoryを代入されていますか?
もしそうでなければ、$this->の方を使ってください。
また商品コードを指定するfindOneByの項目はcodeでした。

$ProductClass = $productClassRepository->findOneBy(['ProductCode' => '※対象の一位のSKU']);



----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

be-s
投稿日時: 2021/3/17 8:52
対応状況: −−−
一人前
登録日: 2016/2/2
居住地: manchester
投稿: 84
Re: カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
tsuji様
ご返答ありがとうございます。

デバックモード使わせていただきます。

function __construcも指定できました。


下記コードで直接SKU書き込むことで
※対象の一位のSKUの商品引き出しできました。


$ProductClass = $this->productClassRepository->findOneBy(['ProductCode' => '※対象の一位のSKU']);


もう一つできないことがるのですが


/**
     * カートに追加.
     *
     * @Route("/products/add_cart/{id}", name="product_add_cart", methods={"POST"}, requirements={"id" = "([0-9a-zA-Z_\-]+\/?)+(?<!\/)"})
     */
    public function addCart(Request $request, Product $Product)
    {
}


上記で指定した{id}内に対象の一位のSKUをURLに入れて飛ばしているのですが、受け取り方がわからないのですが
おしえていただけないでしょうか

お手数をお掛けして申し訳ないのですが
宜しくお願いいたします。
tsuji
投稿日時: 2021/3/23 9:19
対応状況: −−−
仙人
登録日: 2013/11/19
居住地:
投稿: 936
Re: カート追加時の@Route("/products/add_cart/{id} の{id}を{product_code}にする方法知りませんか
be-s 様

遅くなりました。
とり方は色々あるのですが、Product $Productとなっているところを
$idとすると取れると思います。


----------------
****************************************
株式会社システムフレンド
辻 拓也(takuya tsuji)
改造専門店・EC-CUBE工房
****************************************

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


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は71,659名です
総投稿数は101,392件です

投稿数ランキング

1
seasoft
7333
2
468
2999
3
AMUAMU
2712
4
nanasess
2147
5
umebius
2006
6
yuh
1612
7
red
1450
8
h_tanaka
1080
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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