0

我最近开始了我的 Symfony2 世界之旅。我下载的存档(标准版)附带一个演示包 AcmeDemoBundle。我尝试使用官方网站提供的 Symfony2 书籍进行编码。所以我通过 Symfony2 控制台创建了一个我自己的包(EXPHelloBundle)。然后,我创建了与当前包关联的控制器。

问题是这样的:每当我运行我的应用程序(localhost/app_dev.php/hello/whatever)时,浏览器都会打印“hellowhatever”。我知道这条消息来自 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告诉 Symfony 在收到 /hello/whatever 时执行 helloAction 函数。

尝试在您的新控制器中编写以下函数:

/**
 * @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 回答