質問 > フロント機能 > 連想配列データのテンプレートへの受け渡しについて |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
moke |
投稿日時: 2012/1/11 21:12
対応状況: −−−
|
半人前 登録日: 2011/12/15 居住地: 投稿: 20 |
連想配列データのテンプレートへの受け渡しについて トップ画面にカテゴリー毎の画像を表示したく、
以下のようなPRGを作成しました。 動きとしては、dtb_categoryより親カテゴリーを取得し、 その親カテゴリーをもとに子カテゴリーを取得。 取得した、子カテゴリーのdtb_productsを取得し、 取得したデータ内の画像ファイルを表示させようとしています。 ※カテゴリー表示のPRG、テンプレートはデフォルトのcategory関連のファイルを修正しています。 function action() { $this->arrProductTest = $this->lfGetProductData(); } function lfGetProductData() { $objQuery = new SC_Query_Ex(); $arrCategoryId = array(); $col = 'category_id'; $from = 'dtb_category'; $where = 'parent_category_id=0 group by category_id'; $arrCategoryId = $objQuery->select($col, $from, $where); $col = 'p.*'; $from = 'dtb_product_categories as c inner join dtb_products as p on c.product_id = p.product_id inner join dtb_category as cat on c.category_id = cat.category_id'; foreach($arrCategoryId as $category_id){ $where = 'p.del_flg = 0 and cat.parent_category_id=' . $category_id['category_id'] . ' order by rand() limit 1'; $arrProductData[] = $objQuery->select($col, $from, $where); } return $arrProductData; } category_test.tpl <!--{foreach from=$arrProductTest item=arrProduct name="product_data"}--> <p>image:<!--{$arrProduct.main_large_image}--></p> <!--{/foreach}--> 以上のようなPRGを作成したのですが、データ自体は取得でき、phpで確認すると、データも入っています。 しかし、テンプレート上に表示を行おうとすると、 配列自体はわたっていそうなのですが、データが何も入っていません。 何か、連想配列をテンプレートに渡す際に、 足りない処理などあるのでしょうか? どなたか、ご教授いただければ幸いです。 [EC-CUBE] 2.11.4 [サーバ] 自社サーバ [OS] centOS [PHP] 5.3.3 [データベース] MySQL [WEBサーバ] apache2.2.3-53 |
karin |
投稿日時: 2012/1/11 21:33
対応状況: −−−
|
仙人 登録日: 2008/9/15 居住地: 東京都 投稿: 689 |
Re: 連想配列データのテンプレートへの受け渡しについて mokeさん、こんにちは。
mokeさんのプログラムでは、連想配列自体はテンプレート側に受け渡しされていますが、テンプレートでの処理に問題があるように見受けられます。 この連想配列の構造を確認してみてください。
$arrProduct直下にmain_large_imageが格納されているのではなく、 その中にさらにもう一つ配列が存在し、その子要素としてmain_large_imageが格納されているようです。 試しに、
を試してみてください。
|
moke |
投稿日時: 2012/1/11 22:07
対応状況: −−−
|
半人前 登録日: 2011/12/15 居住地: 投稿: 20 |
Re: 連想配列データのテンプレートへの受け渡しについて karin様
ご教授ありがとうございました。 kiranさまのおっしゃる通りに記述してみました所、 無事に表示を行うことができました。 お伺いしたいのですが、「.0.」を付けずに 「$arrProduct.main_large_image」のみで表示をする場合、 どのように配列に格納したらよいのでしょうか? たびたび申し訳ありませんが、ご教授頂ければと思います。 |
karin |
投稿日時: 2012/1/11 22:12
対応状況: −−−
|
仙人 登録日: 2008/9/15 居住地: 東京都 投稿: 689 |
Re: 連想配列データのテンプレートへの受け渡しについて テンプレート側で必要なデータは、main_large_image のみでしょうか?
|
moke |
投稿日時: 2012/1/11 22:15
対応状況: −−−
|
半人前 登録日: 2011/12/15 居住地: 投稿: 20 |
Re: 連想配列データのテンプレートへの受け渡しについて その他、nameやmain_list_image等が必要になります。
項目が一つでないと、実現不可能なのでしょうか? |
karin |
投稿日時: 2012/1/11 22:24
対応状況: −−−
|
仙人 登録日: 2008/9/15 居住地: 東京都 投稿: 689 |
Re: 連想配列データのテンプレートへの受け渡しについて いえ、そんなことはありません。必要な項目が一つであれば後述する方法とはまた違った方法もありましたので、念のため確認させていただいた次第です。
function lfGetProductData() 内でDBからデータを取得する際に、 現在の$objQuery->select ではなく、 一行をカラム名をキーとした連想配列として取得する関数: $objQuery->getRow を使えば可能かと思います。 ※上記関数は、SC_Query.php 内に定義されています。
|
moke |
投稿日時: 2012/1/11 22:33
対応状況: −−−
|
半人前 登録日: 2011/12/15 居住地: 投稿: 20 |
Re: 連想配列データのテンプレートへの受け渡しについて karin様
教えて頂いたとおり、修正しましたところ無事に表示をすることができました! かなり、煮詰まっていましたので本当に大変助かりました。 ご教授頂き、本当にありがとうございました。 |
karin |
投稿日時: 2012/1/11 22:40
対応状況: 解決済
|
仙人 登録日: 2008/9/15 居住地: 東京都 投稿: 689 |
Re: 連想配列データのテンプレートへの受け渡しについて 無事解決されたとのことで、一安心いたしました。おつかれさまでした :))
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |