【问题标题】:routes not working after upgrade to 3.1升级到 3.1 后路线不起作用
【发布时间】:2013-03-28 18:04:08
【问题描述】:

我今天从 SS 3.0 升级到 3.1,自从更新后,系统似乎没有在我的扩展的 _config 文件夹中检测到我的 routes.yml 文件。这是我的 myextension/_config/routes.yml 文件的示例:

---
Name: pusherroutes
After: 
  - '#rootroutes'
---
Director:
  rules:
    # handle old 2.4 style urls
    'pusher/$Action': 'PusherController'

我还设置了我的 allowed_actions 静态以将我的控制器操作列入白名单:

class PusherController extends Controller {
    public static $allowed_actions = array (
    'ChatAuth',
    'SendMessage',
    'NotifyAuth'
    );
}

当我导航到 mysite.com/pusher/SendMessage 时,系统不再将我引导至控制器上的操作方法。在我的网络选项卡中返回的响应是 Silverstripe 入门页面。

【问题讨论】:

    标签: silverstripe


    【解决方案1】:

    这是因为$Action 参数被匹配了两次。当初始pusher/$Action 路由匹配时,URL 的前两部分作为匹配的一部分被使用。然后将控制权传递给您的PusherController 对象。然后尝试再次将 URL 与操作匹配,但由于没有要解析的 URL,它决定不存在任何操作,因此它路由到 index 操作,该操作依次显示入门信息。

    要解决这个问题,只需使用:

    Director:
      rules:
        'pusher': 'PusherController'
    

    并依赖于将控制权交给PusherController 时完成的动作匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-20
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 2017-07-06
      • 2017-06-30
      • 2015-07-05
      • 1970-01-01
      相关资源
      最近更新 更多