是否有一种简单的方法允许所有扩展Page_Controller的页面共享一个allowed_action和Page_Controller本身的相关函数?

时间:2014-12-09 01:08:38

标签: inheritance silverstripe

我有许多控制器扩展我的主Page_Controller。 Page_Controller有一个函数(在模板中使用),用于在页面的页脚中显示表单:

protected function ContactUsForm() {
    $form = new ContactUsForm($this,'EnquireNow');
    return $form;
}

另一个函数处理表单提交:

public function EnquireNow($data, $form) {
    return ContactUsForm::submit($data, $form);
}

提交表单适用于" Page"页面类型,但不适用于任何其他页面类型;显示一个错误,EnquireNow不是允许的操作。如何允许从任何页面提交表单?

使用版本3.1

1 个答案:

答案 0 :(得分:1)

您可以在Extension类中定义$ allowed_actions,然后将其应用于所有控制器。

Documentation说:$ allowed_actions可以在应用于控制器的扩展类上定义。