“ Symfony2”路径“”的参数“”必须与“ [^ /] ++”(给定的“”)匹配才能生成相应的URL。

fre*_*dev 4 php url yaml routes symfony

我有这个路由文件:

indexRechercheZones:
    path:     /gestionzonestechniques
    defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:indexZonesTechnique }
    requirements:
    methods: GET

modifierZones:
    path:     /gestionzonestechniques/modifier/{nom}
    defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:modifierZonesTechnique }
    requirements:
    methods: GET

modifierZones_process:
    path:     /gestionzonestechniques/modifier/process/{nom}
    defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:modifierZonesTechnique }
    requirements:
    methods: POST
Run Code Online (Sandbox Code Playgroud)

现在,当我想继续indexRechercheZones路线中,出现错误

在MySpaceGestion中呈现模板时已引发异常(路由“ modifierZones”的“参数” nom”必须与“ [^ /] ++”(给定的““”相匹配才能生成相应的URL。”)。第71行的sBundle:...:indexZonesTechniques.html.twig。

在我的细枝线71中,我有以下代码

<a href="{{ path('modifierZones', {'nom': zonetechnique.nom}) }}"><button class="btn btn-warning btn-xs">Modifier</button></a>
Run Code Online (Sandbox Code Playgroud)

我认为这是一个正则表达式问题,是symfony的url编写规则问题,但我不知道如何解决此错误。我尝试了一些类似在路线中添加此行的操作:

indexRechercheZones:
    path:     /gestionzonestechniques/
    defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:indexZonesTechnique }
    requirements:
        nom:    \d+ 
    methods: GET
Run Code Online (Sandbox Code Playgroud)

或按要求这样:

requirements:
    nom:    '[a-zA-Z0-9-_\/-\s.^]+'
Run Code Online (Sandbox Code Playgroud)

但这不匹配。有人可以帮忙吗?

谢谢...

小智 6

就像@Coussinsky所说的那样,values您的field“ nom”中的一些在数据库中为空。

您可以根据需要将此参数设置null,或仅更改数据库中的空值。

  • 您可以提出一些要求,以便使用正则表达式编写url,就像您回答“'[a-zA-Z0-9 -_ \ /-\ s。^] +”中提到的那样。但是看一下doc,yml有特定的语法。 (2认同)