2

在 Silverstripe 中,至少有四种方法可以将 Controller 引导到正确的操作:

  1. Controller::handleAction()
  2. Controller::handleRequest()
  3. Controller::allowed_actions
  4. Controller::url_handlers

我理解Controller::allowed_actionsand的概念Controller::handleAction():我可以使用它们来定义要执行的操作。然后url_handlers数组似乎是用来给Controller添加更多规则的。

那么我什么时候应该在我的控制器上使用哪个数组/函数?我应该何时使用Controller::handleRequest()以及如何使用此功能?使用不同的方法有什么区别?

到目前为止,我阅读了很多关于这个主题的文章,但每篇文章都只提到了上述一种可能性,这些方法从未被比较过......

这是我找到的帖子列表:

4

1 回答 1

1

制作控制器动作的最简单方法是使用 allowed_actions 和相应的方法:

static $allowed_actions = array(
    'myaction'
);

function myaction() {
}

url_handlers 允许您定义更多 URL 模式,并允许您将控制权委托给另一个 RequestHandler 对象,例如 Form 或 FormField。这就是处理 GridField 详细信息表单等的 URL 处理方式。

你不应该真的需要覆盖 handleRequest() 或 handleAction()

  • handleRequest() 是解析 url_handlers 的函数
  • 上面例子中的handleAction()调用诸如'myaction'之类的方法

希望这能澄清一点。

于 2012-10-14T23:05:33.780 回答