Symfony2 "Parameter "" for route "" 必须匹配 "[^/]++" ("" given) 以生成相应的 URL."

Symfony2 "Parameter "" for route "" must match "[^/]++" ("" given) to generate a corresponding URL."

我有这个路由文件:

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

现在,当我想继续indexRechercheZones路线时,发生错误:

An exception has been thrown during the rendering of a template ("Parameter "nom" for route "modifierZones" must match "[^/]++" ("" given) to generate a corresponding URL.") in MySpaceGestion...sBundle:...:indexZonesTechniques.html.twig at line 71.

在我的第 71 行中,我有这个 代码:

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

我认为这是一个正则表达式问题,是 symfony 的 url 编写规则的问题,但我不知道如何修复此错误。我尝试了一些事情,比如在我的路线中添加这一行:

indexRechercheZones:
    path:     /gestionzonestechniques/
    defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:indexZonesTechnique }
    requirements:
        nom:    \d+ 
    methods: GET

或者像这样的要求:

requirements:
    nom:    '[a-zA-Z0-9-_\/-\s.^]+'

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

谢谢...

正如@Coussinsky 所说,您的 field "nom" 的一些 values 在您的数据库中是空的。

如果需要,您可以将此 参数 设置为 null,或者只是更改 数据库中的空值。