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

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

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

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

Q&A

解決済

4回答

3533閲覧

symfony2で新しいコントローラ追加してブラウザで確認すると、画面が真っ白になる

imamoto_browser

総合スコア1161

Symfony2

Symphony2は、簡単で速く堅牢なプログラムの開発サイクルに焦点を当てた、オープンソースのPHPウェブアプリケーション開発フレームワークです。PHP version 5.3.3以上を対象としています。

0グッド

0クリップ

投稿2015/06/06 02:05

編集2015/06/06 02:41

http://docs.symfony.gr.jp/symfony2/book/page_creation.htmlの手順でhello,Ryan!は実装できましたが、新しいコントローラで同じことをしようとすると画面が真っ白になります。修正箇所を教えてください。

Resources/config/routing.yml

acme_hello_homepage:
pattern: /hello/{name}
defaults: { _controller: AcmeHelloBundle:Default:index }
acme_pro_homepage:
pattern: /pro/{name}
defaults: { _controller: AcmeHelloBundle:Product:index }

Resources/views/Product/index.html.twig

lang

1Hello {{ name }}!

/src/Acme/HelloBundle/Controller/ProductController.php

lang

1<?php 2 3namespace Acme\HelloBundle\Controller; 4 5use Symfony\Component\HttpFoundation\Response; 6 7class ProductController 8{ 9 public function indexAction($name) 10 { 11 return new Response('<html><body>Hello '.$name.'!</body></html>'); 12 } 13} 14

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

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

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

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

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

guest

回答4

0

ベストアンサー

補足ですけど、

参考URLでは、HelloControllerですが、質問ではDefaultControllerになっています。

honetrさんの回答がありますが、

サイトで紹介されているバンドル生成コマンドを実行すると...

lang

1$ php app/console generate:bundle --namespace=Acme/HelloBundle --format=yml

DefaultController.phpが生成されます。(Hello Ryan!を表示する)
ここから同じ処理のHelloController.phpを作成するように書かれているので間違えやすくなってしまいます。

Routing.ymlもDefaultControllerを参照するように作成されているのでHelloControllerを参照するように変更する必要があります。

また、新しいバージョンでは廃止された関数や記述ミスなどもありましたので参考の際はご注意ください。

投稿2015/06/08 01:19

ucan-lab

総合スコア888

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

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

0

試しにSymfony2.6.9をインストールしてみて、同様のRouting.yml, ProductController.phpをコピペで作成してみましたが、特に真っ白になったりエラーが表示されるということはありませんでした。

UTF-8のBOMなしで保存されているとのことですし、この2つのファイルに問題はなさそうです。

投稿2015/06/08 00:54

ucan-lab

総合スコア888

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

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

0

index.html.twigについての記載がありますが、twigを使う場合はControllerをextendsする必要があります。

見た感じではProductControllerの記述は間違ってなさそうです。
あとは実際に真っ白画面が出たときのURLの値も確認したいです。

念のためですがキャッシュクリアは行った上で確認していますでしょうか。

投稿2015/06/06 05:52

ucan-lab

総合スコア888

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

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

imamoto_browser

2015/06/07 07:13

BOM付きUTF-8についてはvim -bで開いてすでに確認しましたが、該当するタグは確認できませんでした。
guest

0

参考にしているサイト通りして「hello,Ryan!」が実装できたといっていますが、コントローラ名がそもそも違っているのに実装できているのはおかしいです。
参考URLでは、HelloControllerですが、質問ではDefaultControllerになっています。

また、「hello,Ryan!」と表示されるのもおかしいです。
「hello Ryan!」と表示されると思います。

上記を踏まえて、まずどのように確認したのか、Apacheログやphpログの内容なども載せると原因がわかるかもしれません。

投稿2015/06/06 04:30

honetr

総合スコア17

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

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

imamoto_browser

2015/06/06 07:49

回答ありがとうございます、表示はHello Ryan! が正です。表示されているhelloの方はResources/config/routing.ymlをrmコマンドで消しても表示されます。apacheのログだとsyntax errorとなっていました。 切り分けのため、HelloController.phpを削除しても、hello Ryan!は表示されたのでDefaultController.phpが動いているようです。 キャッシュ phpのエラーログ:ERROR - Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException: "No route found for "GET /pro/Ryan"" at /var/www/html/symfony2/app/cache/dev/classes.php line 1871 apacheのエラーログ:PHP Fatal error: Namespace declaration statement has to be the very first statement in the script in /var/www/html/symfony2/src/Acme/HelloBundle/Controller/ProductController.php on line 4 キャッシュクリアの上、動作確認しましたが、やはり/pro/Ryanの方は真っ白になってしまいます。
imamoto_browser

2015/06/06 07:50

修正:現在は真っ白ではなく、No route found for "GET /pro/Ryan"とエラー画面になります。
honetr

2015/06/06 14:06

「routing.ymlをrmコマンドで消しても表示されます」とありますが、ほかの方も言われている通りキャッシュをクリアしてないためではないでしょうか。 何度テストしても、キャッシュが残っていると、修正したソースのテストにはならないので、原因を特定するのは難しいです。 ブラウザのキャッシュは、必ずテストする前に行ってください。 phpログとapacheログも、別のテストの結果を載せている感じです。
ucan-lab

2015/06/07 05:02

No route found for "GET /pro/Ryan" と出るんだったらRountingの定義がうまくできてないようですね。 あとProductController.phpですけどUTF-8のBOMなしで保存されてませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問