2013-03-23 64 views
1

任何机会,我们可以在Symfony的做到这一点:有条件的URL /路由的Symfony2:干净的URL

  • 如果不是一个页面属性:去/category/{category}
  • 如果有一个页面属性:去/category/{category}/page/{page}

我需要一个只有存在页面属性时才能使用dd /page/{page}


到目前为止,我只设法有这样的:

  • 如果不是一个页面属性:去/category/{category}
  • 如果有一个页面属性:转至/category/{category}/{page}

随着以下:

<route id="category_view" pattern="/category/{categoryId}/page/{page}"> 
    <default key="_controller">AcmeHouseBundle:House:view</default> 
    <default key="categoryId">null</default> 
    <default key="page">1</default> 
    <requirement key="categoryId">\d+</requirement> 
    <requirement key="page">\d+</requirement> 
</route> 

所不同的是在具有/category/{category}/page/{page}代替/category/{category}/{page}

回答

2

现在不支持这种事情(直到this PR合并)。所以,你只能有两个不同的途径实现这一目标:

<route id="category_view" pattern="/category/{categoryId}"> 
    <default key="_controller">AcmeHouseBundle:House:view</default> 
    <default key="categoryId">null</default> 
    <default key="page">1</default> 
    <requirement key="categoryId">\d+</requirement> 
</route> 

<route id="category_view_page" pattern="/category/{categoryId}/page/{page}"> 
    <default key="_controller">AcmeHouseBundle:House:view</default> 
    <default key="categoryId">null</default> 
    <default key="page">1</default> 
    <requirement key="categoryId">\d+</requirement> 
    <requirement key="page">\d+</requirement> 
</route> 
+0

是的,谢谢@lazyhammer! – Mick 2013-03-23 00:58:27

+0

很高兴帮助。并感谢与语法高亮帮助:) – lazyhammer 2013-03-23 01:03:16