4

こんにちは私はsymfonyでのルーティングに問題があります。私のrouting_devは次のようになります:

_test:
    resource: "@MyBundle/Controller/DefaultController.php"
    type:     annotation
    prefix:   /test

それから私はコントローラーを持っています:

/**
 * @Route("/", name="_test")
 * @Template()
 */
public function indexAction($name)
{
    return array('name' => $name);
}

/ testを実行しようとすると、次のメッセージが表示されます。

No route found for "GET /test"
404 Not Found - NotFoundHttpException
1 linked Exception: ResourceNotFoundException »

エラーがどこにあるのかわかりません。あなたの助けが必要です。問題を見つける方法は?

編集:私はapp.phpではなくapp_dev.phpで作業しています

4

5 に答える 5

3

まず、routing.ymlがファイルrouting_dev.ymlをインポートしていることを確認する必要があります。

次に、ルートの引数で渡される$name変数を定義する必要があります。この引数がオプションの場合は、デフォルト値を指定できます。

さらに、プレフィックスを注釈に直接配置できることに注意してください。

/**
 * @Route("/blog")
 */
class TheClassController extends Controller
{
    /**
     * @Route("/{name}", name="_test", defaults={"name" = "Jean"})
     * @Template()
     */
    public function indexAction($name)
    {
         return array('name'=>$name);
    }
}

php app/console router:debugその後、実行してルートをテストするコマンドを実行できます。

于 2012-11-16T10:23:36.540 に答える
0

アクションのルートを明示的に設定する必要があります。コントローラ全体だけではありません。

routing.ymlは次のようになります。

mybundle_controller:
    resource: "@MyBundle/Controller"
    type:     annotation
    prefix:   /test

あなたのコントローラーは次のようになります:

/**
 * @Route("/") #Note you can omit this, since you set the prefix in the routing.yml
 * 
 */
public function indexAction($name)
{
    /**
     * @Route("/", name="_test"
     * @Template()
     */
    return array('name' => $name);
}

実行してみてくださいphp app/console router:debug

それはあなたに次のようなものを返すはずです

_test                   ANY      /test/
于 2012-11-16T14:59:37.203 に答える
0

たぶん、http://your.site/app_dev.php/testurlを使用する必要があります。または、ルーティング情報をrouting.yml(routing_dev.ymlではなく)にコピーします

于 2012-11-16T10:19:27.537 に答える
0

実際にURL/testを入力していますか?ルートは「/」だけなので、指定した名前を使用して、テンプレートからそのルートを生成します。URLを/testにしたい場合は、ルートパラメータを次のように変更する必要があります。@Route("/test", name="test")

于 2012-11-16T13:00:50.250 に答える
0

Symfony 4を使用している場合は、doctrine/annotationsパッケージをインストールする必要があります。ダウンロードするには、ターミナルで次のコマンドを実行します。

composer require annotations

このコマンドは、パッケージをベンダーフォルダーにダウンロードし、 config/routesフォルダーの下に新しいannotations.yamlファイルを追加します。annotations.yamlに次の行があることを確認してください。

controllers:
    resource: ../../src/Controller/
    type: annotation

config/routes.yamlファイル内に追加のルート設定は必要ありません。

于 2019-09-12T10:03:18.183 に答える