Silverstripe 升级到3.1后路由不工作

Silverstripe 升级到3.1后路由不工作,silverstripe,Silverstripe,我今天从SS3.0升级到了3.1,自从升级后,系统似乎没有检测到我的扩展名配置文件夹中的routes.yml文件。下面是myextension/_config/routes.yml文件的一个示例: --- Name: pusherroutes After: - '#rootroutes' --- Director: rules: # handle old 2.4 style urls 'pusher/$Action': 'PusherController' 我还将我的

我今天从SS3.0升级到了3.1,自从升级后,系统似乎没有检测到我的扩展名配置文件夹中的routes.yml文件。下面是myextension/_config/routes.yml文件的一个示例:

---
Name: pusherroutes
After: 
  - '#rootroutes'
---
Director:
  rules:
    # handle old 2.4 style urls
    'pusher/$Action': 'PusherController'
我还将我的allowed_actions设置为static,将我的控制器操作列为白名单:

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

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

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

要解决此问题,只需使用:

Director:
  rules:
    'pusher': 'PusherController'
并依赖于将控制权交给推送控制器时执行的动作匹配