Silverstripe:在页面上作为子网址可以访问多对多?

时间:2014-11-07 12:25:12

标签: silverstripe

我正在努力解决问题。我有一个sitetree,其中我 - 显然 - 有页面。这些页面的类型与数据对象具有多对多关系。现在我想实现这样的目标:

/页/数据对象-蛞蝓

因此,当系统检测到url中有一个额外的“层”时,它应该将其传递给Page控制器中的预定义函数。

我可以使用$ allowed_actions,还是会干扰默认路由?它也应该能够使用通配符,因为我事先并不知道DataObject-slug。如果那是不可能的,有没有其他已知的方法来实现这个或类似的东西?

作为替代方案,我可能会做类似于/ Page / SomeAction / DataObject的事情,但这真的很难看,而且可能对客户来说是不可接受的。

另一种选择当然是使用控制器作为页面,但这将消除为用户轻松嵌套页面的可能性,并创建像/ ParentPage / Page / DataObject-slug这样的结构。

我正在使用SS 3.1.6

1 个答案:

答案 0 :(得分:0)

我成功使用了https://github.com/NightJar/ssrigging-slug。如果您的关系是has_many或many_many并不重要,您可以使用$this->ManyManyRelationName()

访问控制器中的项目

它利用$url_handlers来完成这项工作。

如果您在安装时遇到任何问题,请提供代码粘贴。