Module SilverStripe 3:模块可以扩展mysite/code/Page.php吗?

Module SilverStripe 3:模块可以扩展mysite/code/Page.php吗?,module,extend,silverstripe,Module,Extend,Silverstripe,下午好, 我不知道我想做的事是否可行,所以就这样吧。 我有一个扩展页面控制器的模块,但我希望通过站点根目录访问某些功能。 例如:getMyDataObjectList() 目前,只有通过正常的MVC路由结构,它们才能工作。 我发现,当我将函数“getMyDataObjectList”放在“/mysite/code/Page.php”中时,它可以工作。问题是,我不想将代码放在那里。我希望它与我的自定义模块捆绑在一起,但工作方式与“mysite/code/Page.php”中的一样 [示例场

下午好,

我不知道我想做的事是否可行,所以就这样吧。

我有一个扩展页面控制器的模块,但我希望通过站点根目录访问某些功能。
例如:getMyDataObjectList()
目前,只有通过正常的MVC路由结构,它们才能工作。

我发现,当我将函数“getMyDataObjectList”放在“/mysite/code/Page.php”中时,它可以工作。

问题是,我不想将代码放在那里。我希望它与我的自定义模块捆绑在一起,但工作方式与“mysite/code/Page.php”中的一样

[示例场景]

站点根:http://[somesite].com
默认情况下,将加载“Page.ss”模板。
我希望主题开发人员能够在任何模板/布局页面中调用我的模块函数(API),并从站点根目录返回结果
目前,只有当我将“API”函数移到“/mysite/code/Page.php”时,这才有效 如果代码在我的模块中,则仅当您转到时才会返回数据:
http://[somesite].com/[module\u controller]

这能实现吗?如果是,怎么做?

谢谢你的帮助

[更新-代码解决方案]

和往常一样,我会做一个(/dev/build?flush=1)以防万一。 感谢:“西蒙·w”
是的,这是相对简单的。简单地说,用方法创建一个
扩展
子类,然后将其添加到
Page\u控制器
扩展
子类几乎与
数据扩展
完全相同,它们只适用于数据对象以外的类。

完美。谢谢。我编辑了上面的帖子,为任何想看代码的人展示了代码解决方案。@添加更好的选项,将解决方案作为答案发布好的,注意到。谢谢
///>MyExtension.php
class MyExtension extends Extension{
    public function getMyDataObjectList(){
         return 'object list goes here!';
    }
}//class

///>[Module] => _config.php
Object::add_extension('Page_Controller', 'MyExtension');