質問 > フロント機能 > 登録されている商品点数を表示する方法を教えてください |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
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: 登録されている商品点数を表示する方法を教えてください こんな感じでしょうか。
public function index(Application $app) {} 内に記述してみてください。 TOPではこの関数が呼ばれます。 また、修正された index.twig の場所は、app/template/default で合っていますか? それでも {{ test }} が出力されないのは前後の記述方法に問題があるか、キャッシュを削除すればうまく表示されるかもしれません。
|
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 で検索して、コントローラーとブロックを紐づけ。
|
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の値を書き換えないといけないとは考えもしなかったので、完全に盲点でした。 この度は、誠にありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |