0

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

当我没有输入 slug 并且没有最后一个斜杠site.me/lucky/number时,就可以了。但是,当我使用 lash slash site.me/lucky/number/输入 no slug 时,我得到 404 页。我找到了一个带有额外“根”路由的解决方法,可以在下面的路由文件中看到。

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

我在 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>
4

2 回答 2

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路线

于 2016-08-30T23:17:04.517 回答
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 注意:前面缺少反斜杠 - 试试看

于 2016-08-30T22:54:33.910 回答