バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 商品詳細画面URLでの商品ID変換について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
yamu16
投稿日時: 2021/1/13 14:11
対応状況: 解決済
新米
登録日: 2021/1/13
居住地:
投稿: 6
商品詳細画面URLでの商品ID変換について
前提:URL末尾の商品IDを数値そのままではなく、可逆変換した状態で直接リンクするURLを利用したい。

試した事:eccube4直下の「.htaccess」上で変換をかけてみようとしたが、index.phpに渡される部分が変わらないようで失敗。
(RewriteRuleで変換後にリダイレクトするとURLが書き換わるので意図した状態とならない)

その後調査した事:
src/Eccube/Controller/ProductController.php
商品詳細画面の@Routeアノテーションの中で
requirements={"id" = "[a-zA-Z0-9]"}
と、半角英字も対象としましたが、
その先で、どこのソースでIDの文字数値→数値変換を行えばよいのか見つからない状態です。

質問1:
@ParamConverterを利用している段階で、Productのidを数値以外で取得不能でしょうか?

質問2:
(質問1が負荷の場合:URLを演算後の数値のみとして対応)
どこで元の数値への復元処理を行えばその後の処理を修正せずに対応可能でしょうか?
468
投稿日時: 2021/1/13 16:03
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 商品詳細画面URLでの商品ID変換について
@ParamConverteで指定されてる"repository_method" = "findWithSortedClassCategories"は
ProductRepository->findWithSortedClassCategories()を指定しているかと思います。

新しいメソッドをProductRepositoryに追加して@ParamConverteの指定を変更すれば
目的の値でProductを取得する事は可能と思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

yamu16
投稿日時: 2021/1/13 18:21
対応状況: −−−
新米
登録日: 2021/1/13
居住地:
投稿: 6
Re: 商品詳細画面URLでの商品ID変換について
468様
早々のご回答ありがとうございます。
下記対応で無事に動きました。

src/Eccube/Repository/ProductRepository.php
内に、findWithSortedClassCategoriesを元にして
findWithSortedClassCategoriesFromEncryptIdを作成。
試しに数値のみとする変換を行い、
 $decryptId = preg_replace('/[^0-9]/', '', $productId);
検索用パラメータを置き換えて実装しました。
 ->setParameter('id', $decryptId)


ProductController.phpのアノテーションを下記のように修正しました。
(requirementsの+抜けミスは修正済)
* 商品詳細画面.
*
* @Route("/products/detail/{id}", name="product_detail", methods={"GET"}, requirements={"id" = "[a-zA-Z0-9]+"})
* @Template("Product/detail.twig")
* @ParamConverter("Product", options={"repository_method" = "findWithSortedClassCategoriesFromEncryptId"})


※うまく修正後の情報が読み込まれず、旧メソッドが呼ばれていたのですが、管理画面からキャッシュ削除を実行したら反映されました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,308名です
総投稿数は109,693件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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