You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 8模块路由报错:Undefined index:path及访问被拒求助

解决Drupal 8模块路由的两个问题:Undefined Index Notice和访问被拒绝

先来说第一个错误:Notice: Undefined index: path

这个提示通常意味着Drupal解析路由配置时没找到path字段,大概率是YAML格式的缩进问题——Drupal对YAML的缩进要求非常严格,必须用两个空格(绝对不能用Tab)区分层级。你贴的routing.yml结构看着没问题,但建议仔细检查path、defaults、requirements这些顶级键的缩进是否完全一致,以及defaults下的_controller、_title是不是比defaults多缩进两个空格。

另外要确认你的路由文件名是mymodule.routing.yml,且放在模块根目录下(不是子文件夹),文件名拼写、大小写必须和模块名完全匹配。

最后一定要执行缓存清除:

drush cr

或者后台进入「配置>性能」页面清除全部缓存——Drupal会缓存路由配置,修改后必须清缓存才能让新配置生效。


再解决第二个问题:Access denied(访问被拒绝)

你的路由里写的requirements: _role: anonymous,这个规则的意思是只有未登录的匿名用户才能访问这个页面。如果你现在处于登录状态,访问被拒绝是完全符合预期的行为。

如果你的需求是让所有用户(包括登录和匿名)都能访问,应该把_role改成_permission,用一个所有用户都拥有的权限,比如:

requirements:
  _permission: 'access content'

如果你确实只想让匿名用户访问,那退出登录后再访问/mypage就能正常打开了。

另外补充个小细节:_role即便是单个角色,也建议用引号括起来,避免YAML解析异常,比如:

requirements:
  _role: 'anonymous'

总结一下操作步骤:

  • 检查mymodule.routing.yml的YAML缩进,确保全用两个空格、无Tab
  • 确认路由文件名和存放位置正确
  • 清除Drupal缓存
  • 根据实际需求调整requirements里的权限/角色规则,或切换到匿名状态访问

内容的提问来源于stack exchange,提问作者Robert-Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:09:48