升级到3.1后路由不能正常工作

时间:2013-03-28 18:04:09

标签: silverstripe

我今天从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入门页面。

1 个答案:

答案 0 :(得分:3)

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

要解决此问题,请使用:

Director:
  rules:
    'pusher': 'PusherController'

并依赖于在将控制权交给PusherController时执行的操作匹配。