Silverstripe URL映射到操作

时间:2015-10-31 16:34:51

标签: url routes silverstripe

我正在尝试将某个URL映射到某个Controller操作。目前我在项目中有一个MVC设置,其中site.com/members/view/1将向我显示第一个成员,site.com/members/edit/1将编辑第一个成员。然后如果我去site.com/members/add会给我注册表。我想去site.come / register并获取site.com/members/add发布的表格。

到目前为止,我已尝试使用routes.yml文件中的路由,这是我所做的:

Name: mysiteroutes
Before: '*'
After:
  - '#rootroutes'
  - '#coreroutes'
  - '#modelascontrollerroutes'
  - '#adminroutes'
---
Director:
  rules:
    'register': 'MembersPage_Controller'

这在一定程度上起了作用。如果我去site.com/register/add,它会给我表格。我试图弄清楚如何删除添加部分。我怎么告诉它,当你去site.com/register加载MembersPage_Controller / add action?

1 个答案:

答案 0 :(得分:0)

好吧,我不知道是否可以使用Director的规则直接路由到一个动作。

但是你可以将现有控制器子类化,并将“添加”操作作为此操作的默认操作,例如。

Class MemberAddController extends MemberPage_Controller {
    private static $url_handlers = array(
        '' => 'add'
    );
}

并在你的config.yml:

Director:
  rules:
    'register': 'MemberAddController'

当然,如果索引方法未使用,您可以将此$url_handlers值添加到现有控制器中。