0

私はsymfony2が初めてです。「Hello {Name}」の簡単なページを作成し、WAMP を使用しています。そして私のrouting.ymlは次のとおりです

projectnew_bundle:
    resource: "@projectnew_bundle/Resources/config/routing.yml"
    type:     annotation
    prefix:   /start

私の @projectnew_bundle/Resources/config/routing.yml は次のとおりです (projectnew_bundle は src フォルダー内の \project\new_bundle の名前空間です):

projectnew_bundle_hello:
    pattern:  start/hello/{name}
    defaults: { _controller: projectnew_bundle:Start:hello }

また、構文を使用してバンドル projectnew_bundle を AppKernel.php に登録しました"new project\new_bundle\projectnew_bundle()"。私の\src\project\new_bundle\projectnew_bundle.phpは次のとおりです。

<?php

namespace project\new_bundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class projectnew_bundle extends Bundle
{
}

しかし、「http://localhost/symfony_project/Symfony/web/app_dev.php/start/hello/Riten」という URL をロードしようとすると、500 内部サーバー エラーが発生します。

リソース を読み込めません"@projectnew_bundle/Resources/config/routing.yml""projectnew_bundle/Resources/config/routing.yml"バンドルが正しく登録され、アプリケーション カーネル クラスにロードされていることを確認してください。

4

2 に答える 2

3

type:annotationをrouting.ymlから削除してみてください

編集:

あなたのapp/cofig/routing.ymlには

projectnew_bundle:
    resource: "@projectnew_bundle/Resources/config/routing.yml"
    prefix:   /start

*注:削除しましたtype: annotation

/startしたがって、に含まれるすべてのルートにプレフィックスを設定しますprojectnew_bundle/Resources/config/routing.yml

次に、あなた@projectnew_bundle/Resources/config/routing.ymlは持っています:

projectnew_bundle_hello:
    pattern:  start/hello/{name}
    defaults: { _controller: projectnew_bundle:Start:hello }

これは、最終ルートからプレフィックスを追加するprojectnew_bundle_helloパターンでルートを作成しますが、期待どおりではありません。start/hello/{name}app/config/routing.yml/startstart/hello/{name}/start/hello/{name}

予想されるルートを機能させたい場合は、startから削除できます@projectnew_bundle/Resources/config/routing.yml

このコマンドphp app/console router:debugは、ルートが実際に何であるかを示します。

于 2012-10-20T13:15:54.640 に答える
1

type: アノテーションに変更する場合は、リソース パスをコントローラー パスに変更する必要があります。

projectnew_bundle:
resource: "@projectnew_bundle/Controller"
type:     annotation
prefix:   /start
于 2015-05-17T09:51:24.043 に答える