Symfony 3使用slug进行路由。没有slug的最后一个斜杠的路线显示404页面

时间:2016-08-30 22:47:47

标签: symfony symfony-routing

我开始使用Symfony。我试图用slugs设置路由并遇到问题。

当我输入没有slug而没有最后一个斜线 site.me/lucky/number 时,它没问题。 但是当我用睫毛斜线 site.me/lucky/number / 输入没有slug时,我得到404页面。 我找到了一个解决方法,附加了" root"路由,可以在我的路由文件中看到。

是否可以使用单个路线条目? 是否可以使用多个路由进行相同的操作?类似于创建配置的单个路径条目的链接,因此我不必在许多路径条目中进行类似的更改。

我在ubuntu 16上使用php内置服务器。

<!-- routing.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing
    http://symfony.com/schema/routing/routing-1.0.xsd">
    <route id="homepage" path="/">
        <default key="_controller">AppBundle:Default:index</default>
    </route>
    <route id="lucky_number_root" path="lucky/number/">
        <default key="_controller">AppBundle:Lucky:number</default>
        <default key="max">100</default>
    </route>
    <route id="lucky_number" path="lucky/number/{max}">
        <default key="_controller">AppBundle:Lucky:number</default>
        <default key="max">100</default>
        <requirement key="max">\d+</requirement>
    </route>
</routes>

2 个答案:

答案 0 :(得分:0)

您是否尝试过将routing.xml文件更改为以下内容:

<route id="lucky_number" path="/lucky/number/{max}/">
  <default key="_controller">AppBundle:Lucky:number</default>
  <default key="max">100</default>
  <requirement key="max">\d+</requirement>
</route>

我认为这可能会奏效 - 试试吧。刚刚添加了反斜杠。

编辑#2 注意:前面缺少反斜杠 - 尝试

答案 1 :(得分:0)

使max参数可选<requirement key="max">\d*</requirement>

<!-- routing.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing
    http://symfony.com/schema/routing/routing-1.0.xsd">
    <route id="homepage" path="/">
        <default key="_controller">AppBundle:Default:index</default>
    </route>
    <route id="lucky_number_root" path="lucky/number/">
        <default key="_controller">AppBundle:Lucky:number</default>
        <default key="max">100</default>
    </route>
    <route id="lucky_number" path="lucky/number/{max}">
        <default key="_controller">AppBundle:Lucky:number</default>
        <default key="max">100</default>
        <requirement key="max">\d*</requirement>
    </route>
</routes>

您也可以在这种情况下删除lucky_number_root路由