【问题标题】:Submit Form in Dataobject - Silverstripe 3.1在 Dataobject 中提交表单 - Silverstripe 3.1
【发布时间】:2014-01-17 21:49:44
【问题描述】:

我正在使用 Aram 的 DataobjectAsPage 模块。 现在我想在每个 DOaP 站点上都有一个表格。我在我的数据对象中创建了这样的表单

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 %>

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

提前谢谢

【问题讨论】:

    标签: php forms silverstripe


    【解决方案1】:

    您的 RegistrationFormdoRegistration 函数需要在您的 Holder 页面控制器中,而不是您的数据对象中。

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

    【讨论】:

    • 好的,没有别的办法了吗?但是还有另一个问题。因为如果我将表单放入支架中,$submission-&gt;EventObjectID = $this-&gt;ID; 将不会返回实际数据对象的 ID。有没有办法解决这个问题?
    • 您在表单中创建了一个隐藏字段来包含您的事件对象 ID。
    猜你喜欢
    • 1970-01-01
    • 2018-02-15
    • 2018-03-02
    • 2015-10-06
    • 1970-01-01
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多