在Silverstripe中,至少有四种方法可以将Controller指向正确的操作:
Controller::handleAction()
Controller::handleRequest()
Controller::allowed_actions
Controller::url_handlers
我理解Controller::allowed_actions
和Controller::handleAction()
的概念:
我可以用它们来定义执行哪个动作。然后,url_handlers
数组似乎用于向Controller添加更多规则。
那我什么时候应该在我的控制器上使用哪个数组/功能?我应该何时使用Controller::handleRequest()
以及如何使用此功能?使用不同的aproaches有什么不同?
到目前为止,我已经阅读了很多关于这个主题的内容,但每篇文章都提到了上述可能性之一,这些方法从未被比较过......
以下是我发现的帖子列表:
答案 0 :(得分:1)
执行控制器操作的最简单方法是使用allowed_actions和相应的方法:
static $allowed_actions = array(
'myaction'
);
function myaction() {
}
url_handlers允许您定义更多URL模式,并允许您将控件委托给另一个RequestHandler对象,例如Form或FormField。这就是如何处理GridField详细信息表单等的URL处理。
您不应该真正需要覆盖handleRequest()或handleAction()
希望这可以解决一些问题。