0

私は最近、Symfony2 の世界への旅を始めました。ダウンロードしたアーカイブ (標準版) には、AcmeDemoBundle というデモ バンドルが付属しています。公式サイトで提供されているSymfony2の本と合わせてコーディングしてみました。そこで、Symfony2 コンソールから独自のバンドル (EXPHelloBundle) を作成しました。次に、現在のバンドルに関連付けられたコントローラーを作成しました。

問題は次のとおりです。アプリ (localhost/app_dev.php/hello/whatever) を実行するたびに、ブラウザーが "hello anything" を出力します。このメッセージは AcmeDemoBundle (Symfony2 アーカイブに付属するバンドル) から実行されることを知っています。EXP/HelloController.php にどのような変更を加えても、アプリは自然に AcmeDemoBundle を (デフォルトで) 実行します。簡単に言うと、Symfony2 にデモ バンドルの代わりにバンドルを実行するように指示する方法がわかりません。

4

2 に答える 2

1

HTTP リクエストを新しいコントローラーにルーティングする必要があります。

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

このコードはsrc/Acme/DemoBundle/Controller/DemoController.php、/hello/whatever が受信されるたびに helloAction 関数を実行するように Symfony に指示します。

新しいコントローラーに次の関数を記述してみてください。

/**
 * @Route("/new/hello/{name}", name="new_demo_hello")
 * @Template()
 */
public function helloAction($name)
{
    return array('name' => $name);
}

ブラウザで /new/hello/something に移動します

重要なのはルーティング コンポーネントです。クックブックを参照すると、基本的な概念を理解するのに非常に簡単であることがわかります。

于 2013-11-04T09:18:58.593 に答える
1

acme バンドルを正しく削除するには、これを試す必要があります。

http://symfony.com/doc/current/cookbook/bundles/remove.html

于 2013-11-04T09:15:59.767 に答える