バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

その他 > その他 > タグ付けをした商品のリストを表示する。

その他

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
banajin
投稿日時: 2024/1/5 18:17
対応状況: −−−
常連
登録日: 2023/10/24
居住地:
投稿: 39
タグ付けをした商品のリストを表示する。
▼テンプレート
[EC-CUBE] 4.2.2
[レンタルサーバ] ローカル環境
[OS] 使用しているOS名、バージョン
[PHP] 7.3.33
MAMPのローカルServerで環境構築してます。

[現象] 再現手順や、どのような現象が発生しているかなど、具体的に
タイトルの通りタグ付けした商品のみをリストにしたいのですができません。
コードはネットを参考にしたりチャットgptで書いてみましたが何も表示されません。
{# Productエンティティを取得 #}
{% set productRepository = repository('Eccube\\Entity\\Product') %}
{% set products = productRepository.findBy({}, {'id': 'desc'}, 24) %}

{# Tagエンティティを取得 #}
{% set tagRepository = repository('ECcube\\Entity\\Tag') %}
{% set tags = tagRepository.findBy({'id':5}) %}

<div class="newArrival__list newProduct">

{# TagエンティティからProductエンティティを取得し、表示する #}
{% for tag in tags %}
{% set productsWithTag = tag.getProducts() %}
{% for product in productsWithTag %}

<div class="newProduct__box">
<a href="{{ url('product_detail', {'id': product.id}) }}">
<div class="newProduct__imgCase">
<img class="newProduct__img" src="{{ asset(product.main_list_image|no_image_product, 'save_image') }}">
</div>
<p class="newProduct__name">{{ product.name }}</p>
<p class="newProduct__price">{{ product.getPrice02IncTaxMax|price }}</p>
</a>
</div>

{% endfor %}
{% endfor %}
</div>

以上、どうかよろしくおねがいします。
tattsu
投稿日時: 2024/1/5 18:33
対応状況: −−−
長老
登録日: 2023/12/23
居住地:
投稿: 210
Re: タグ付けをした商品のリストを表示する。
TagにはgetProductsというメソッドはないので、通常の状態であればここでエラーになっているはずです。
{% set productsWithTag = tag.getProducts() %}

src/Eccube/Entity/Tag.phpを確認されると良いかと思います。

getProductTagというメソッドならあります。


----------------
-------------------
EC-CUBEカスタマイズ・バージョンアップ・不具合修正 
気軽にご相談ください。ゴールドランクパートナー。

banajin
投稿日時: 2024/1/5 21:20
対応状況: −−−
常連
登録日: 2023/10/24
居住地:
投稿: 39
Re: タグ付けをした商品のリストを表示する。
一応エラーが出ていない状態にはなっています。
tattsu
投稿日時: 2024/1/5 21:37
対応状況: −−−
長老
登録日: 2023/12/23
居住地:
投稿: 210
Re: タグ付けをした商品のリストを表示する。
.envでAPP_DEBUG=0になっていませんか?

APP_DEBUG=1であれば0の時に黙殺されるエラー表示されるかと思います。開発時はこちらの方が便利です。


----------------
-------------------
EC-CUBEカスタマイズ・バージョンアップ・不具合修正 
気軽にご相談ください。ゴールドランクパートナー。

banajin
投稿日時: 2024/1/5 22:19
対応状況: −−−
常連
登録日: 2023/10/24
居住地:
投稿: 39
Re: タグ付けをした商品のリストを表示する。
すいません確かに1に変更するとエラーが発生しました。
発生点は
<img class="newProduct__img" src="{{ asset(product..main_list_image|no_image_product, 'save_image') }}">
この部分でした。
エラー内容がRuntimeError
上の赤のところにはVariable "main_list_image" does not exist.とかいてありました。
banajin
投稿日時: 2024/1/5 22:26
対応状況: −−−
常連
登録日: 2023/10/24
居住地:
投稿: 39
Re: タグ付けをした商品のリストを表示する。
すいません、あともう一つ不思議だと思っている点がありまして、
デバックにタグの欄にID:5にセール品を当てはめているのですが、何故か名前がnullになっています。
ProductTag: Doctrine\ORM\PersistentCollection {#1531 ▼
#collection: Doctrine\Common\Collections\ArrayCollection {#1530 ▼
-elements: array:1 [▼
0 => Eccube\Entity\ProductTag {#1533 ▼
-id: 10
-create_date: DateTime @1704458185 {#1381 ▶}
-Product: Eccube\Entity\Product {#1374}
-Tag: Proxies\__CG__\Eccube\Entity\Tag {#1544 ▼
#id: 5
#name: null
#sort_no: null
#ProductTag: null
+__isInitialized__: false
…2
}
これは普通なのでしょうか?
tattsu
投稿日時: 2024/1/6 11:57
対応状況: −−−
長老
登録日: 2023/12/23
居住地:
投稿: 210
Re: タグ付けをした商品のリストを表示する。
引用:
<img class="newProduct__img" src="{{ asset(product..main_list_image|no_image_product, 'save_image') }}">


最初のコードと違ってmain_list_imageの前のドットが2つになっています。それが原因かと思います。


----------------
-------------------
EC-CUBEカスタマイズ・バージョンアップ・不具合修正 
気軽にご相談ください。ゴールドランクパートナー。

tattsu
投稿日時: 2024/1/6 12:46
対応状況: −−−
長老
登録日: 2023/12/23
居住地:
投稿: 210
Re: タグ付けをした商品のリストを表示する。
引用:
デバックにタグの欄にID:5にセール品を当てはめているのですが、何故か名前がnullになっています。


こちらは通常の挙動です。Doctrineのlazy loadingにより、明示的に$Tag->getName()などして必要になるまで読み込まれません。


----------------
-------------------
EC-CUBEカスタマイズ・バージョンアップ・不具合修正 
気軽にご相談ください。ゴールドランクパートナー。

banajin
投稿日時: 2024/1/6 16:00
対応状況: −−−
常連
登録日: 2023/10/24
居住地:
投稿: 39
Re: タグ付けをした商品のリストを表示する。
{# Productエンティティを取得 #}
{% set productRepository = repository('Eccube\\Entity\\Product') %}
{% set products = productRepository.findBy({}, {'id': 'desc'}, 12) %}

{# Tagエンティティを取得 #}
{% set tagRepository = repository('ECcube\\Entity\\Tag') %}
{% set tags = tagRepository.findBy({'id' : 5 }) %}

<div class="newArrival__list newProduct">
{# TagエンティティからProductエンティティを取得し、表示する #}
{% for tag in tags %}
{% set productsWithTag = tag.getProductTag() %}
{% for product in productsWithTag %}
<div class="newProduct__box">
<a href="{{ url('product_detail', {'id': product.id}) }}">
<div class="newProduct__imgCase">
<img class="newProduct__img" src="{{ asset(product.main_list_image|no_image_product, 'save_image') }}">
</div>
<p class="newProduct__name">{{ product.name }}</p>
<p class="newProduct__price">{{ product.getPrice02IncTaxMax|price }}</p>
</a>
</div>
{% endfor %}
{% endfor %}
</div>
お忙しいところありがとうございます。
..も修正しましたが以前変わらず同じRuntimeErrorが出ています。
場所も全く同じところです。
引用:

tattsuさんは書きました:
引用:
<img class="newProduct__img" src="{{ asset(product..main_list_image|no_image_product, 'save_image') }}">


最初のコードと違ってmain_list_imageの前のドットが2つになっています。それが原因かと思います。
tattsu
投稿日時: 2024/1/6 17:26
対応状況: −−−
長老
登録日: 2023/12/23
居住地:
投稿: 210
Re: タグ付けをした商品のリストを表示する。
productsWithTag をループして代入されている「product」という変数はProductではなくProductTagというクラスのオブジェクトです。

{% for product in productsWithTag %}
ではなく
{% for productTag in productsWithTag %}
{% set product = productTag.Product %}

ではないでしょうか。


----------------
-------------------
EC-CUBEカスタマイズ・バージョンアップ・不具合修正 
気軽にご相談ください。ゴールドランクパートナー。

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


 



ログイン


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

統計情報

総メンバー数は88,873名です
総投稿数は110,000件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1295
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.