我使用的是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'
这让我可以制作如下网址:
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}/").
我真的需要能够在路径的开头传递一个空变量。
有什么建议吗?
答案 0 :(得分:0)
不确定Symfony2中是否存在条件路由。我建议你为命名空间为空的情况创建一个特定的路由。
#_namespace not empty
welcome:
path: /{_namespace}/welcome
defaults:
_controller: AppBundle:User:welcome
_namespace: %namespace%
methods: [GET]
#namespace empty
welcome2:
path: /welcome
defaults:
_controller: AppBundle:User:welcome
methods: [GET]
注意到占位符及其默认值现在不存在。
在控制器或视图中,您只需检查参数_namespace的值并调用其中一条路径。
//If you use the route in the controller, with generateUrl fonction for example
$namespace= $this->container->getParameter('_namespace');
if($namespace!= '') { //use welcome }
else { //use welcome2 }
如果在视图中使用路线,请将树枝对应。
希望它有所帮助。