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

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

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

Doctrineは、データベースの抽象性とPHPで書かれたORMを扱うためのオープンソースのライブラリとツールの集合です。

PHP

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

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

EC-CUBE

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

Q&A

解決済

2回答

3904閲覧

[EC-CUBE4] パラメータの付与

nelo

総合スコア15

Doctrine

Doctrineは、データベースの抽象性とPHPで書かれたORMを扱うためのオープンソースのライブラリとツールの集合です。

PHP

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

Symfony

Symfony はPHPで記述されたWebアプリケーションフレームワークです。よく利用するコーディングをテンプレーティングするなど、Webアプリケーション開発の効率化を目的として設計されています。

EC-CUBE

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

0グッド

0クリップ

投稿2018/10/05 05:46

編集2018/10/05 07:22

EC-CUBE4にて、新規作成(管理画面→コンテンツ管理→ページ管理)で作成したページに

コントローラ側から新規ページにパラメータを付与できず、

このようなエラーになります。

イメージ説明

ソースコード
[SamplePageController.php]

php

1namespace Customize\Controller; 2 3use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 4use Eccube\Controller\AbstractController; 5use Eccube\Entity\Product; 6use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 7use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 8 9class SamplePageController extends AbstractController 10{ 11 /** 12 * @Method("GET") 13 * @Route("/user_data/sample") 14 * @Template("sample.twig") 15 */ 16 17 public function SamplePage() 18 { 19 //カテゴリページの取得の処理 20 $Categories = $this->entityManager->getRepository('Eccube\Entity\Category')->getList(); 21 22 //サンプル画像表示処理 23 /** @var Product $product */ 24 $product = $this->entityManager->getRepository('Eccube\Entity\Product')->find(1); 25 $image = $product->getProductImage(); 26 $images = []; 27 28 foreach ($image as $ProductImage) { 29 $images[] = $ProductImage->getFileName(); 30 } 31 return [ 32 'image' => $images, 33 'Category' => $Categories, 34 ]; 35 } 36} 37 38

[sample.twig]

{% extends 'default_frame.twig' %} {% block main %} <div id="container"> <div id="boxA"> <h3>サンプル開発</h3> </div> <div id="wrapper"> <div id="boxB"> <div class="item_visual"> {% for ProductImage in image %} <div class="slide-item"><img src="{{ asset(ProductImage, 'save_image') }}"></div> {% else %} <div class="slide-item"><img src="{{ asset(''|no_image_product, 'save_image') }}"/></div> {% endfor %} </div> </div> <div id="boxC"> C(サイドバー1) </div> </div> <div id="boxD"> {% macro tree(Category) %} {% from _self import tree %} <a href="{{ url('category', { Category_id : Category.id }) }}"> {{ Category.name }} {# {% set size = Category.children | length %} ({{(size)}})#} </a> {% endmacro %} {% from _self import tree %} <div class="ec-cateoryNaviRole"> <div class="ec-itemNav"> <ul class="ec-itemNav__nav"> {% for Category in Category %} <li> {{ tree(Category) }} </li> {% endfor %} </ul> </div> </div> </div> <div id="boxE"> E(フッタ) </div> </div> </body> </html> {% endblock %}

[新規ページ]
イメージ説明

[スタックトレース]

Twig_Error_Runtime: Variable "image" does not exist. at /var/www/html/ec-cube/app/template/default/sample.twig:57 at __TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c->{closure}() (/var/www/html/ec-cube/var/cache/dev/twig/de/dea9f2defaabe5bdeea9f0f42cbcc2419590e7e192caa9f9f85a46c25a53d9c3.php:110) at __TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c->block_main(array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル', 'layoutRoleMain' => 'ec-layoutRole__mainWithColumn', '_parent' => array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル', 'layoutRoleMain' => 'ec-layoutRole__mainWithColumn')), array('stylesheet' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_stylesheet'), 'main' => array(object(__TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c), 'block_main'), 'javascript' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_javascript'))) (/var/www/html/ec-cube/vendor/twig/twig/lib/Twig/Template.php:189) at Twig_Template->displayBlock('main', array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル', 'layoutRoleMain' => 'ec-layoutRole__mainWithColumn'), array('stylesheet' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_stylesheet'), 'main' => array(object(__TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c), 'block_main'), 'javascript' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_javascript'))) (/var/www/html/ec-cube/var/cache/dev/twig/8a/8a236ec8c9fb9ede1f2e710f3c0877ec3724c9de9cdbede7fc6f0d451c21f9e1.php:255) at __TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734->doDisplay(array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル', 'layoutRoleMain' => 'ec-layoutRole__mainWithColumn'), array('stylesheet' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_stylesheet'), 'main' => array(object(__TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c), 'block_main'), 'javascript' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_javascript'))) (/var/www/html/ec-cube/vendor/twig/twig/lib/Twig/Template.php:390) at Twig_Template->displayWithErrorHandling(array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル'), array('stylesheet' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_stylesheet'), 'main' => array(object(__TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c), 'block_main'), 'javascript' => array(object(__TwigTemplate_7c4ba192c1521dd7412ec57bb202dfc0b6e32de0d4a8d051a98ae7739e09d734), 'block_javascript'))) (/var/www/html/ec-cube/vendor/twig/twig/lib/Twig/Template.php:367) at Twig_Template->display(array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル'), array('main' => array(object(__TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c), 'block_main'))) (/var/www/html/ec-cube/var/cache/dev/twig/de/dea9f2defaabe5bdeea9f0f42cbcc2419590e7e192caa9f9f85a46c25a53d9c3.php:34) at __TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c->doDisplay(array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル'), array('main' => array(object(__TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c), 'block_main'))) (/var/www/html/ec-cube/vendor/twig/twig/lib/Twig/Template.php:390) at Twig_Template->displayWithErrorHandling(array('app' => object(AppVariable), 'BaseInfo' => object(BaseInfo), 'eccube_config' => object(EccubeConfig), 'Layout' => object(Layout), 'Page' => object(Page), 'title' => 'サンプル'), array('main' => array(object(__TwigTemplate_ad36445279859ce375110b80239150907458d5d1cbf6b17a0909e7c4c114797c), 'block_main'))) (/var/www/html/ec-cube/vendor/twig/twig/lib/Twig/Template.php:367) at Twig_Template->display(array()) (/var/www/html/ec-cube/vendor/twig/twig/lib/Twig/Template.php:375) at Twig_Template->render(array()) (/var/www/html/ec-cube/vendor/symfony/twig-bridge/TwigEngine.php:49) at Symfony\Bridge\Twig\TwigEngine->render('@user_data/sample.twig', array()) (/var/www/html/ec-cube/vendor/symfony/twig-bundle/TwigEngine.php:45) at Symfony\Bundle\TwigBundle\TwigEngine->render('@user_data/sample.twig', array()) (/var/www/html/ec-cube/vendor/symfony/framework-bundle/Controller/ControllerTrait.php:284) at Symfony\Bundle\FrameworkBundle\Controller\Controller->render('@user_data/sample.twig') (Eccube/Controller/UserDataController.php:79) at Eccube\Controller\UserDataController->index(object(Request), 'sample') (/var/www/html/ec-cube/vendor/symfony/http-kernel/HttpKernel.php:151) at Symfony\Component\HttpKernel\HttpKernel->handleRaw(object(Request), 1) (/var/www/html/ec-cube/vendor/symfony/http-kernel/HttpKernel.php:68) at Symfony\Component\HttpKernel\HttpKernel->handle(object(Request), 1, true) (/var/www/html/ec-cube/vendor/symfony/http-kernel/Kernel.php:200) at Symfony\Component\HttpKernel\Kernel->handle(object(Request)) (/var/www/html/ec-cube/index.php:54)

新規で作成した(http://●●●/user_data/sample)にパラメータを付与させ、ブラウザ上で表示させたいのですが
どなたかわかる方いませんか?

手順が分かる方、どうかお願い致します。

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

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

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

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

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

xenbeat

2018/10/05 05:55

sample.twigも追記してください
nelo

2018/10/05 06:00

sample.twig 追加いたしました。
nelo

2018/10/05 06:25

[新規ページ]の情報が誤っていたため、修正しました。
退会済みユーザー

退会済みユーザー

2018/10/05 07:16

スクショとってる画面のスタックトレースにちゃんと「SamplePageController」がいますか?
nelo

2018/10/05 07:23

スタックトレース追加いたしました。SampePageControllerはいません。
退会済みユーザー

退会済みユーザー

2018/10/05 07:35

やっぱり UserDataController よばれてるね(回答の予想通り)
退会済みユーザー

退会済みユーザー

2018/10/05 07:48

優先順位の変更が必要でしょうねそのURLを使う場合(設定ファイルをいじり倒すことになるだろうな)
nelo

2018/10/05 08:37

ありがとうございます。参考にさせていただきます。
guest

回答2

0

ベストアンサー

こちらを参考にしてControllerとTwigを追加してみてください。

EC-CUBE4を動かしたことないのですが、たぶん
こっちのController(ルーティング)が優先されているんだと思います。
このControllerはTwigにimageを渡していないので、そのようなエラーが出ているのだと思います。
試しに当該Controllerでdump('hoge')等すればわかるかと。

投稿2018/10/05 06:38

xenbeat

総合スコア4258

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

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

nelo

2018/10/05 07:51

回答ありがとうございました。問題解決いたしました。 @Routeアノテーションをこのような形に変更いたしました。 /** * @Method("GET") * @Route("/%eccube_user_data_route%/{route}", name="user_data", requirements={"route": "([0-9a-zA-Z_\-]+/?)+(?<!/)"}) * @Template("sample.twig") */
退会済みユーザー

退会済みユーザー

2018/10/05 08:21

ちなみにそれ他の /user_data/* も全て新規作成ページもそこへいくだろうな
nelo

2018/10/05 08:28

行ってしまいました。
xenbeat

2018/10/05 11:11 編集

回答した方法でダメな(今の手段にこだわっている)理由はあるんですか? 紹介した方法はEC-CUBEのコアコードに影響を与えないようにカスタマイズするアプローチです。 もしダメな場合は、EC-CUBEのコアコードに手を加える必要があるため、まずは紹介した方法で対応できないかご検討ください。
guest

0

新規作成したURLに合わせることで解決いたしました。

例 新規ページ「URL」http://●●●●/user_data/sample

 controller
/**
* @Method("GET")
* @Route("/sample", name="sample")
* @Template("sample.twig")
*/

投稿2018/10/09 07:18

nelo

総合スコア15

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問