質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

1回答

5519閲覧

EC-CUBE3で在庫の表示

Hiroaki-Yamada

総合スコア25

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

1クリップ

投稿2016/08/30 02:46

編集2016/09/05 04:33

現在EC-CUBE3で開発をしています。
管理画面の商品マスターで「検索する」を押した時に在庫数を取得し、在庫が0の商品に「在庫切れ」アイコンを表示するということをやりたいです。

コントローラー下記のように作成しましたが、twigにうまくデータが渡せません。

php

1<?php 2namespace Eccube\Controller\Admin\Product; 3 4class ProductController extends AbstractController 5{ 6 public function index(Application $app, Request $request, $page_no = null) 7 { 8 9 $builder = $app['form.factory'] 10 ->createBuilder('admin_search_product'); 11 12 $event = new EventArgs( 13 array( 14 'builder' => $builder, 15 ), 16 $request 17 ); 18 $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_INDEX_INITIALIZE, $event); 19 20 $searchForm = $builder->getForm(); 21 22 $pagination = array(); 23 24 $disps = $app['eccube.repository.master.disp']->findAll(); 25 $pageMaxis = $app['eccube.repository.master.page_max']->findAll(); 26 $page_count = $app['config']['default_page_count']; 27 $page_status = null; 28 $active = false; 29 $stock = null; 30 31 if ('POST' === $request->getMethod()) { 32 33 $searchForm->handleRequest($request); 34 35 if ($searchForm->isValid()) { 36 $searchData = $searchForm->getData(); 37 38 // paginator 39 $qb = $app['eccube.repository.product']->getQueryBuilderBySearchDataForAdmin($searchData); 40 $page_no = 1; 41 42 $event = new EventArgs( 43 array( 44 'qb' => $qb, 45 'searchData' => $searchData, 46 ), 47 $request 48 ); 49 $app['eccube.event.dispatcher']->dispatch(EccubeEvents::ADMIN_PRODUCT_INDEX_SEARCH, $event); 50 $searchData = $event->getArgument('searchData'); 51 52 $pagination = $app['paginator']()->paginate( 53 $qb, 54 $page_no, 55 $page_count, 56 array('wrap-queries' => true) 57 ); 58 // ここから 59 foreach ($pagination as $value) { 60 $Product = $app['eccube.repository.product']->find($value['id']); 61 if (!$Product) { 62 throw new NotFoundHttpException(); 63 } 64 $has_class = $Product->hasProductClass(); 65 66 if (!$has_class) { 67 $ProductClasses = $Product->getProductClasses(); 68 $ProductClass = $ProductClasses[0]; 69 $BaseInfo = $app['eccube.repository.base_info']->get(); 70 if ($BaseInfo->getOptionProductTaxRule() == Constant::ENABLED && $ProductClass->getTaxRule() && !$ProductClass->getTaxRule()->getDelFlg()) { 71 $ProductClass->setTaxRate($ProductClass->getTaxRule()->getTaxRate()); 72 } 73 $ProductStock = $ProductClasses[0]->getProductStock(); 74 } 75 76 if ($ProductStock['stock'] === '0'){ 77 $stock[] = '在庫切れ'; 78 } else { 79 $stock[] = ''; 80 } 81 } 82 // ここまで実装 83 // sessionのデータ保持 84 $session->set('eccube.admin.product.search', $searchData); 85 } 86 } 87 88 return $app->render('Product/index.twig', array( 89 'searchForm' => $searchForm->createView(), 90 'pagination' => $pagination, 91 'disps' => $disps, 92 'pageMaxis' => $pageMaxis, 93 'page_no' => $page_no, 94 'page_status' => $page_status, 95 'page_count' => $page_count, 96 'active' => $active, 97 //'stock' => $stock 98 )); 99 }

twig

1 2 {% for Product in pagination %} 3 <div id="result_list__item--{{ Product.id }}" class="item_box tr"> 4 <div id="result_list__id--{{ Product.id }}" class="item_id td"> 5 {{Product.id}} 6 </div> 7 <div id="result_list__image--{{ Product.id }}" class="item_photo td"> 8 <a href="{{ url('admin_product_product_edit', { id : Product.id }) }}"> 9 <img src="{{ app.config.image_save_urlpath }}/{{ Product.mainFileName|no_image_product }}" /> 10 </a> 11 </div> 12 <div id="result_list__name--{{ Product.id }}" class="item_detail td"> 13 <a href="{{ url('admin_product_product_edit', { id : Product.id }) }}"> 14 {{ Product.name }} 15 </a> 16 {{ stock }} 17 <br> 18 <span id="result_list__code--{{ Product.id }}"> 19 {{ Product.code_min }} 20 {% if Product.code_min != Product.code_max %} {{ Product.code_max }} 21 {% endif %} 22 </span> 23 </div> 24 <div id="result_list__item_menu_box--{{ Product.id }}"class="icon_edit td"> 25 <div id="result_list__item_menu_toggle--{{ Product.id }}" class="dropdown"> 26 <a class="dropdown-toggle" data-toggle="dropdown"><svg class="cb cb-ellipsis-h"><use xlink:href="#cb-ellipsis-h"></svg></a> 27 <ul id="result_list__item_menu--{{ Product.id }}" class="dropdown-menu dropdown-menu-right"> 28 <li><a href="{{ url('admin_product_product_class', { id : Product.id }) }}">規格</a></li> 29 <li><a href="{{ url('admin_product_product_display', {'id' : Product.id}) }}" target="_blank">確認</a></li> 30 <li><a href="{{ url('admin_product_product_copy', {'id' : Product.id}) }}" {{ csrf_token_for_anchor() }} data-method="post" data-message="商品情報を複製してもよろしいですか?">複製</a></li> 31 <li><a href="{{ url('admin_product_product_delete', {'id' : Product.id}) }}" {{ csrf_token_for_anchor() }} data-method="delete" data-message="商品情報を削除してもよろしいですか?">削除</a></li> 32 </ul> 33 </div> 34 </div> 35 </div><!-- /.item_box --> 36 {% endfor %}

PHP側でpaginationに在庫情報を入れて渡そうとしましたがうまくいかず、レンダリングする箇所で在庫情報を渡すとArrayと表示されてうまくいきません。どうすればいいでしょうか?よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

EC-CUBEのフォーラムに投稿したら解決しました。
商品マスターに在庫切れを表示するカスタマイズ

投稿2016/09/06 08:06

Hiroaki-Yamada

総合スコア25

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問