バージョン選択

フォーラム

メニュー

オンライン状況

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

PR

先着1,000社 プラグインダウンロード&お申込で1,000円分Amazonギフト券プレゼント amazon pay
広告掲載について

サイト内検索

質問 > フロント機能 > 登録されている商品点数を表示する方法を教えてください

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
gothin
投稿日時: 2018/4/10 16:17
対応状況: −−−
新米
登録日: 2018/4/10
居住地:
投稿: 3
登録されている商品点数を表示する方法を教えてください
[EC-CUBE] 3.0.15 (新規インストール)
[OS] CentOS
[PHP] PHP Version 5.4.45
[データベース] PostgreSQL 8.4.20
[WEBサーバ] Apache/2.2.15

ECCUBE2だと、DBから商品点数を取得してphpを書けば表示することができたのですが、ECCUBE3になってtwigに直接phpを書くことができなくなってしまって、今までと同じことをやりたくてもできなくなってしまいました。

controllerに書いた物をtwigに変数か関数を書けば出力されるという基本的なことは理解しているのですが、どのcontrollerファイルが該当するのかがわかりません。


具体的にやりたいこととしては、ECCUBE2で、ヘッダー部分に以下のような記述をして、商品点数を表示していたので、同じことをECCUBE3でやりたいのです。
<?php
$objQuery = new SC_Query();
$table = 'dtb_product';
$where = 'del_flg = 0 AND status = 1';
$count = $objQuery->count($table, $where);
echo $count;
?>


試行錯誤をいろいろ試していたのですが、とりあえずECCUBE3で、とにかく何かしらを出力したいと思って、
/src/Eccube/Controller/TopController.phpに、
class TopController extends AbstractController
{
public function test(Application $app) {
$test = 'テストです';
return $app->render('index.twig', array(
'test' => $test,
));
}
}
のような記述をして、index.twigへ{{ test }}と記述すると、エラーが出てしまいます。
Variable "test" does not exist in "__string_template__9e1eac7c81a28d9f8bb91d68f3e34a7788d903de0146960bbda41dfc26105f5d" at line 48.

Controllerに記述したものが存在しないことになっていて、これがなぜなのかもわかりません。
そもそもの手順が違うのでしょうか。
h_tanaka
投稿日時: 2018/4/10 18:06
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 508
Re: 登録されている商品点数を表示する方法を教えてください
こんな感じでしょうか。

$products = $app['eccube.repository.product']->findAll();
$num = count($products);


public function index(Application $app) {}
内に記述してみてください。
TOPではこの関数が呼ばれます。
また、修正された index.twig の場所は、app/template/default で合っていますか?
それでも {{ test }} が出力されないのは前後の記述方法に問題があるか、キャッシュを削除すればうまく表示されるかもしれません。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

gothin
投稿日時: 2018/4/10 18:41
対応状況: −−−
新米
登録日: 2018/4/10
居住地:
投稿: 3
Re: 登録されている商品点数を表示する方法を教えてください
ありがとうございます!

>また、修正された index.twig の場所は、app/template/default で合っていますか?
はい、app/template/default/index.twigです

教えていただいた記述を追記したところ、トップでは問題なく表示できました。


ついでになってしまって申し訳ないのですが、
これを全ページで表示する場合、
例えば、logo.twigなどに表示したいときの該当のControllerはどのファイルにすれば良いかも教えていただけないでしょうか。
h_tanaka
投稿日時: 2018/4/11 8:49
対応状況: −−−
仙人
登録日: 2016/7/22
居住地: 愛媛県
投稿: 508
Re: 登録されている商品点数を表示する方法を教えてください
全ページで表示したい場合は、ブロックとして追加することをおすすめします。
すでにあるヘッダーブロックなどに表示するか、独自で動的なブロックを作成してみてください。

以下、メモ書き程度ですが参考にしてみてください。
■既存ブロックの動的化
・src/Eccube/Controller/Block にコントローラーを新規作成。
 ファイルの中身は既存のコントローラーを参考に作成。
・データベースの dtb_block において、対象のブロックのレコードの logic_flg を1に変更。
・src/Eccube/ControllerProvider/FrontControllerProvider.php にて、 block で検索して、コントローラーとブロックを紐づけ。


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

gothin
投稿日時: 2018/4/16 19:16
対応状況: −−−
新米
登録日: 2018/4/10
居住地:
投稿: 3
Re: 登録されている商品点数を表示する方法を教えてください
返信が遅くなってしまい申し訳ありません
データベースの部分でこちらからアクセスできなかったので、調整で時間がかかってしまいました。

>■既存ブロックの動的化
>・src/Eccube/Controller/Block にコントローラーを新規作成。
> ファイルの中身は既存のコントローラーを参考に作成。
>・データベースの dtb_block において、対象のブロックのレコードの logic_flg を1に変更。
>・src/Eccube/ControllerProvider/FrontControllerProvider.php にて、 block で検索して、コントローラーとブロックを紐づけ。

参考に教えていただいた手順で、問題なく対応できました。
まさかDBの値を書き換えないといけないとは考えもしなかったので、完全に盲点でした。

この度は、誠にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

総メンバー数は28,667名です
総投稿数は86,774件です

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1752
4
yuh
1500
5
red
1165
6
468
1085
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
651
13 karin 650
14 sumida 641
15
homan
633
16 DELIGHT 571
17
h_tanaka
508
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.