php 路由“”的Symfony 2“参数“”必须与“[^/]++”(“”给定)匹配,以生成相应的URL,”

xqkwcwgp  于 2023-04-28  发布在  PHP
关注(0)|答案(2)|浏览(135)

我有一个routes文件:

  1. indexRechercheZones:
  2. path: /gestionzonestechniques
  3. defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:indexZonesTechnique }
  4. requirements:
  5. methods: GET
  6. modifierZones:
  7. path: /gestionzonestechniques/modifier/{nom}
  8. defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:modifierZonesTechnique }
  9. requirements:
  10. methods: GET
  11. modifierZones_process:
  12. path: /gestionzonestechniques/modifier/process/{nom}
  13. defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:modifierZonesTechnique }
  14. requirements:
  15. methods: POST

现在当我想继续indexRechercheZones路由时,出现错误
在呈现模板期间引发异常(“参数“nom”for route“modifierZones”必须匹配“[^/]++”(“”given)以生成相应的URL。”)在MySpaceGestion。..sBundle:...:indexZonesTechniques.html.twig在第71行。
在我的wig第71行中,我有这个代码

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

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

  1. indexRechercheZones:
  2. path: /gestionzonestechniques/
  3. defaults: { _controller: MySpaceGestionEquipementsTechniquesBundle:GestionZonesTechniques:indexZonesTechnique }
  4. requirements:
  5. nom: \d+
  6. methods: GET

或者像这样的要求:

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

但它不匹配。有人能帮忙吗
谢谢...

ltqd579y

ltqd579y1#

就像@Coussinsky说的,数据库中的一些values“nom”是空的。
如果需要,可以将此参数设置为null,或者只是更改数据库上的空值。

2exbekwf

2exbekwf2#

我更喜欢使用注解而不是。YML

  1. #[Route('/gestionzonestechniques/{nom}', name: 'indexRechercheZones', requirements: ['nom' => '\d+'], methods: ['GET'])]
  2. public function action(Request $request): JsonResponse
  3. {}

是的,错误消息告诉$nom值与您的模式'\d +'不匹配。
您需要在生成路由URI之前控制该值,或者将模式更改为'。*'

相关问题