バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 新規で作成したページにコントローラーでDB操作したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
boss12
投稿日時: 2017/2/22 22:03
対応状況: −−−
常連
登録日: 2016/2/17
居住地:
投稿: 53
新規で作成したページにコントローラーでDB操作したい
[EC-CUBE] EC-CUBEのバージョン3.09
[レンタルサーバ] CPI
[OS] mac
[データベース] mysql
[ブラウザ] chrome

 新規でページを作成すると、user_data/〇〇というような形でURLが生成されるかと思います。
まず、test.twigというページを作成しました。
中身は以下になります。


{% extends 'default_frame.twig' %}

{% block main %}

テストです。
{{ test }}

{% endblock %}


次に、Eccube/Controller以下にTestController.phpを作成し、中身は以下になります。

<?php
namespace Eccube\Controller;

use Eccube\Application;
use Symfony\Component\HttpFoundation\Request;

class TestController
{
/**
*テスト
*
* @param Application $app
* @param Request $request
* @return \Symfony\Component\HttpFoundation\RedirectResponse|\Symfony\Component\HttpFoundation\Response
*/

public function index(Application $app, Request $request)
{

$test = 'hello world';
return $app->render('user_data/test.twig', array(
'test' => $test,
));
}

}




最後に、FrontControllerProvider.phpにいかを追加しました。

$c->match('/user_data/test', '\Eccube\Controller\TestController::index')->bind('test');


しかしページにアクセスしてみると、「テストです」しか表示されません。

Hello world を出力できるようにしたいのですが、どのようにしたらよいでしょうか?
よろしくお願いいたします。
aoki.u
投稿日時: 2017/2/22 22:26
対応状況: −−−
常連
登録日: 2017/2/19
居住地:
投稿: 53
Re: 新規で作成したページにコントローラーでDB操作したい

$c->match('/'.$app['config']['user_data_route'].'/{route}', '\Eccube\Controller\UserDataController::index')->assert('route', '([0-9a-zA-Z_\-]+\/?)+(?<!\/)')->bind('user_data');

よりも前の行に書いてもダメでしょうか?


----------------
ECCUBE3系のインテグレートパートナーとして
カスタマイズやプラグイン開発に専念しています。
ぜひご相談ください。

boss12
投稿日時: 2017/2/23 6:26
対応状況: −−−
常連
登録日: 2016/2/17
居住地:
投稿: 53
Re: 新規で作成したページにコントローラーでDB操作したい
ご回答いただいたように、前の行に記述してみましたところ、
「システムエラーが発生しました。」となってしまい、表示できませんでした。
index_dev.phpをつけ確認しましたら、以下のエラーとなっていました。

Twig_Error_Loader in Chain.php line 63:
Template "user_data/test" is not defined.

コントローラーのエラー箇所をいろいろなパスを試しても同じく、パス名のみ変わり、エラーが出ました。
umebius
投稿日時: 2017/2/23 9:24
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 新規で作成したページにコントローラーでDB操作したい
aoki.uさんのコードに加えて、
コントローラで下記コードを追加
        
$paths = array($app['config']['user_data_realdir']);         
$app['twig.loader']->addLoader(new \Twig_Loader_Filesystem($paths));


また、
render('user_data/test.twig'ではなく、
render('test.twig'に変更してみてください


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

boss12
投稿日時: 2017/2/23 15:35
対応状況: −−−
常連
登録日: 2016/2/17
居住地:
投稿: 53
Re: 新規で作成したページにコントローラーでDB操作したい
ありがとうございます。
実現しました。
しかし、{% extends 'default_frame.twig' %}
が中途半端に効くようになったのか、headerの中身がうまく表示できません。

ルーティングを解除すると、Headerが表示されます。
どのようにすれば解決できるでしょうか?
aoki.u
投稿日時: 2017/2/24 7:20
対応状況: −−−
常連
登録日: 2017/2/19
居住地:
投稿: 53
Re: 新規で作成したページにコントローラーでDB操作したい
おそらくdtb_page_layoutテーブルに情報がうまく登録されていないのでは
phpMyAdminなどでのぞいてみてください


----------------
ECCUBE3系のインテグレートパートナーとして
カスタマイズやプラグイン開発に専念しています。
ぜひご相談ください。

boss12
投稿日時: 2017/2/24 17:07
対応状況: 解決済
常連
登録日: 2016/2/17
居住地:
投稿: 53
Re: 新規で作成したページにコントローラーでDB操作したい
本当でした!
URLのところをcontrollerProviderのに変更したらうまく表示されました!
ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,286名です
総投稿数は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.