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

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

ただいまの
回答率

90.48%

  • Symfony2

    119questions

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

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

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,635

imamoto_browser

score 1066

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
Hello {{ name }}!

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

namespace Acme\HelloBundle\Controller;

use Symfony\Component\HttpFoundation\Response;

class ProductController
{
  public function indexAction($name)
  {
    return new Response('<html><body>Hello '.$name.'!</body></html>');
  }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

0

補足ですけど、

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

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

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

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/06 16: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の方は真っ白になってしまいます。

    キャンセル

  • 2015/06/06 16:50

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

    キャンセル

  • 2015/06/06 23:06

    「routing.ymlをrmコマンドで消しても表示されます」とありますが、ほかの方も言われている通りキャッシュをクリアしてないためではないでしょうか。

    何度テストしても、キャッシュが残っていると、修正したソースのテストにはならないので、原因を特定するのは難しいです。
    ブラウザのキャッシュは、必ずテストする前に行ってください。

    phpログとapacheログも、別のテストの結果を載せている感じです。

    キャンセル

  • 2015/06/07 14:02

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

    キャンセル

0

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/06/07 16:13

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

    キャンセル

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Symfony2

    119questions

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