その他 > その他 > タグ付けをした商品のリストを表示する。 |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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 居住地: 投稿: 385 |
Re: タグ付けをした商品のリストを表示する。 TagにはgetProductsというメソッドはないので、通常の状態であればここでエラーになっているはずです。
{% set productsWithTag = tag.getProducts() %} src/Eccube/Entity/Tag.phpを確認されると良いかと思います。 getProductTagというメソッドならあります。
|
banajin |
投稿日時: 2024/1/5 21:20
対応状況: −−−
|
常連 ![]() ![]() 登録日: 2023/10/24 居住地: 投稿: 39 |
Re: タグ付けをした商品のリストを表示する。 一応エラーが出ていない状態にはなっています。
|
tattsu |
投稿日時: 2024/1/5 21:37
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2023/12/23 居住地: 投稿: 385 |
Re: タグ付けをした商品のリストを表示する。 .envでAPP_DEBUG=0になっていませんか?
APP_DEBUG=1であれば0の時に黙殺されるエラー表示されるかと思います。開発時はこちらの方が便利です。
|
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 居住地: 投稿: 385 |
Re: タグ付けをした商品のリストを表示する。 引用:
<img class="newProduct__img" src="{{ asset(product..main_list_image|no_image_product, 'save_image') }}"> 最初のコードと違ってmain_list_imageの前のドットが2つになっています。それが原因かと思います。
|
tattsu |
投稿日時: 2024/1/6 12:46
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2023/12/23 居住地: 投稿: 385 |
Re: タグ付けをした商品のリストを表示する。 引用:
デバックにタグの欄にID:5にセール品を当てはめているのですが、何故か名前がnullになっています。 こちらは通常の挙動です。Doctrineのlazy loadingにより、明示的に$Tag->getName()などして必要になるまで読み込まれません。
|
banajin |
投稿日時: 2024/1/6 16:00
対応状況: −−−
|
常連 ![]() ![]() 登録日: 2023/10/24 居住地: 投稿: 39 |
Re: タグ付けをした商品のリストを表示する。 ![]() {% 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 |
投稿日時: 2024/1/6 17:26
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2023/12/23 居住地: 投稿: 385 |
Re: タグ付けをした商品のリストを表示する。 productsWithTag をループして代入されている「product」という変数はProductではなくProductTagというクラスのオブジェクトです。
{% for product in productsWithTag %} ではなく {% for productTag in productsWithTag %} {% set product = productTag.Product %} ではないでしょうか。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |