バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
gothin
投稿日時: 2018/4/10 16:17
対応状況: −−−
新米
登録日: 2018/4/10
居住地:
投稿: 4
登録されている商品点数を表示する方法を教えてください
[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
居住地: 愛媛県
投稿: 1610
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
居住地:
投稿: 4
Re: 登録されている商品点数を表示する方法を教えてください
ありがとうございます!

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

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


ついでになってしまって申し訳ないのですが、
これを全ページで表示する場合、
例えば、logo.twigなどに表示したいときの該当のControllerはどのファイルにすれば良いかも教えていただけないでしょうか。
h_tanaka
投稿日時: 2018/4/11 8:49
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1610
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
居住地:
投稿: 4
Re: 登録されている商品点数を表示する方法を教えてください
返信が遅くなってしまい申し訳ありません
データベースの部分でこちらからアクセスできなかったので、調整で時間がかかってしまいました。

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

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

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


 



ログイン


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

統計情報

総メンバー数は88,288名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.