在Dataobject中提交表单 - Silverstripe 3.1

时间:2013-12-30 23:17:44

标签: php forms silverstripe

我正在使用Aram的DataobjectAsPage模块。 现在我希望在每个DOaP网站上都有一个表格。我在我的Dataobject

中创建了这样的表单
public function RegistrationForm() {

    $fields = new FieldList(
        new TextField('Name'),
        new TextField('PlusOne')
    );

    $actions = new FieldList(
        new FormAction('doRegistration', 'Submit')
    );

    return new Form($this, 'RegistrationForm', $fields, $actions);
}

public function doRegistration($data, $form) {

    $submission = new RegistrationObject();
    $form->saveInto($submission);
    $submission->EventObjectID = $this->ID;
    $submission->write();

    return $this->redirectBack();

}

我的Dataobject_show.ss模板看起来像这样

$RegistrationForm
<% loop Registrations %>
    $Name - $PlusOne
<% end_loop %>

表格在那里,但数据没有提交。相同的表单适用于普通页面,但不适用于数据对象。我该如何解决这个问题?

事先提前

1 个答案:

答案 0 :(得分:3)

您的RegistrationFormdoRegistration功能需要位于Holder页面控制器中,而不是数据对象中。

这是因为数据对象页面实际上是由持有者控制器控制的。因此,如果您向此页面提交表单,它实际上会提交给持有者页面。