【发布时间】:2014-09-24 10:32:37
【问题描述】:
我正在使用 Symfony 2.3。
目前我正在调整我的 routing.yml 以使用我在 parameters.yml 中定义的变量。我为每个客户/项目选择一个参数,但有时我需要它为空。
默认情况下(我猜),SF 确实需要在变量前加上斜杠。
这是我目前工作的routing.yml:
index:
path: /{_namespace}/
defaults:
_controller: AppBundle:User:index
_namespace: %namespace%
methods: [GET]
welcome:
path: /{_namespace}/welcome
defaults:
_controller: AppBundle:User:welcome
_namespace: %namespace%
methods: [GET]
还有我的 parameters.yml:
parameters:
# [....]
namespace: 'project1'
这让我可以生成如下 URL:
http://www.domain.com/project1/
http://www.domain.com/project1/welcome
但是,就像我之前所说的,我确实需要这样的路线:
为此,我尝试了以下方法(注意前面的斜线除外):
routing.yml:
index:
path: {_namespace}/
defaults:
_controller: AppBundle:User:index
_namespace: %namespace%
methods: [GET]
welcome:
path: {_namespace}/welcome
defaults:
_controller: AppBundle:User:welcome
_namespace: %namespace%
methods: [GET]
parameters.yml:
parameters:
# [....]
namespace: ''
并且出现异常:
[Symfony\Component\Config\Exception\FileLoaderLoadException]
Cannot import resource "/home/cupaofarmacia/src/Ongagement/AppBundle/Resour
ces/config/routing.yml" from "/home/project/app/config/routing.yml".
(Malformed inline YAML string ({_namespace}/) at line 51 (near "path:
{_namespace}/").)
[Symfony\Component\Yaml\Exception\ParseException]
Malformed inline YAML string ({_namespace}/) at line 51 (near "path: {
_namespace}/").
我真的需要能够在路由开始时传递一个空变量。
有什么建议吗?
【问题讨论】:
-
如果保留斜线并为
_namespace提供默认值,则可以生成您提到的路由。 -
但是我的默认值需要为空,这会生成一个类似“//welcome”的url。
-
需要为空是什么意思?你不能只为它提供一个占位符吗?如果你这样做了,那么前面的斜杠将被忽略,它将是“/welcome”。
-
好吧,占位符就是 {_namespace},但是传递一个空参数给它会导致错误的 url。
标签: php symfony routing yaml symfony-2.3