1

我正在按照有关创建示例应用程序的说明进行操作。我正在尝试快速掌握如何创建一些(目前)静态页面 - 没有用户身份验证,没有 ORM 等,只是为了让一些东西启动并运行。

我创建了两个捆绑包:

$ php app/console generate:bundle --namespace=app1/FooBundle --format=yml
$ php app/console generate:bundle --namespace=app2/FooBarBundle --format=yml

根据文档(以及 Symfony 1.x 如何工作的知识),我希望能够使用以下方式访问这两个“应用程序”:

http://sf2.examples.localhost/app_dev.php/app1/hello/angrycoder
http://sf2.examples.localhost/app_dev.php/app2/hello/angrycoder

但是,在这两种情况下,我都收到了 404 错误。

回到文档后,我读到要使用的正确 URL 是;

http://sf2.examples.localhost/app_dev.php/hello/angrycoder

就显示带有angrycoder的页面而言,这似乎是“有效的” 。

但是 - 我不知道实际调用了哪个应用程序 - 因为我还没有弄清楚如何显示调试工具栏。

因此,我的问题是:

  1. 如何访问给定捆绑包中的特定页面(静态或其他)?

[[编辑]]

This is what my app/config/routing.yml file looks like:

app1CoreBundle:
    resource: "@app1CoreBundle/Resources/config/routing.yml"
    prefix:   /

app2CoreBundle:
    resource: "@app2CoreBundle/Resources/config/routing.yml"
    prefix:   /

# Internal routing configuration to handle ESI
#_internal:
#   resource: "@FrameworkBundle/Resources/config/routing/internal.xml"
#   prefix:   /_internal

可以看出,两者都有一个前缀'/'。所以当我输入:

http://sf2.examples.localhost/app_dev.php/hello/angrycoder

实际调用了哪个应用程序(为什么?)。

据我了解,能够调用特定应用程序的唯一(显而易见的方式)是为不同的应用程序使用不同的前缀 - 还是我遗漏了什么?

4

2 回答 2

2

您必须使用路由系统来满足这种需求。
因此,如果您进入,app/config/routing或者更详细地进入,src/app1/FooBundle/Resources/config/routing.yml您可以更改显示的页面

详细地

// app/config/routing.yml
AcmeHelloBundle
resource: "@AcmeHelloBundle/Resources/config/routing.yml"
prefix:   /
//end

// src/Acme/AcmeHelloBundle/Resources/config/routing.yml
AcmeHelloBundle_homepage:
pattern:  /hello/{name}
defaults: { _controller: AcmeHelloBundle:Default:index }
//end

这样,我告诉 symfony 找到 che 路由系统和规则,AcmeHelloBundle进入文件AcmeHelloBundle/Resources/config/routing.yml
之后,进入AcmeHelloBundle/Resources/config/routing.yml我说每个带有 url 之类的路径都/hello{placeHolder}将传递到Default控制器并渲染index

希望很清楚。

于 2012-06-20T12:18:08.653 回答
1

当您使用 Symfony 2 时,忘记您对 Symfony 1.x 的了解。除了名称和整体 MVC 方法之外,它们是非常不同的框架。

Symfony 2 没有 Symfony 1 那样的“应用程序”。您可以将自己的 Bundles 视为 symfony 1 应用程序,但不要误会:没有直接的类似物。Bundles 比应用程序更通用、更灵活(这是一件好事)

正如您所发现的,对包的控制器的访问完全由路由系统控制。

于 2012-06-20T15:38:58.063 回答