Silverstripe 升级到3.1后路由不工作
我今天从SS3.0升级到了3.1,自从升级后,系统似乎没有检测到我的扩展名配置文件夹中的routes.yml文件。下面是myextension/_config/routes.yml文件的一个示例: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' 我还将我的
---
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'
并依赖于将控制权交给推送控制器时执行的动作匹配