如何在主页中放置两个SilverStripe DefinedUserForms

时间:2015-03-12 12:10:00

标签: php silverstripe

在SilverStripe中,如何在一个页面上显示两个UserDefinedForm

我可以在页面上显示一个UserDefinedForm,但我无法在同一页面上显示两个UserDefinedForm。我想在我的主页上显示两个UserDefinedForm

要显示一个HomePage我将其放在我的<div id="contactForm" style="display: none;"> <% control ShowForm %> <p><strong>$SiteConfig.FormHeading</strong></p> $Form <% end_control %> </div> 模板中:

ShowForm()

功能HomePage.php位于我的function ShowForm() { $get = DataObject::get_one('UserDefinedForm'); return new UserDefinedForm_Controller($get); }

UserDefinedForm

我的问题是我创建了两个表单,一个用于联系人,另一个用于预订试用版。两种形式都是HomePage.php s,所以如果我在function ShowTestDriveForm(){ $get = DataObject::get_one('UserDefinedForm'); return new UserDefinedForm_Controller($get); } 示例中编写另一个函数:

UserDefinedForm

它什么都不做,或者会呈现我的第一个联系人表格。

如果我创建了两个public function showTestDriveForm() { $record = DataObject::get_one("UserDefinedForm", "URLSegment = 'BookTestDrive'"); $results = new UserDefinedForm_Controller($record); return $results; } ,那么测试驱动器表单的php应该是什么样的?

我试图通过URLSegment获取它,但它给了我一个内部服务器错误:

UserDefinedForm

如何将第二个{{1}}添加到主页模板?

1 个答案:

答案 0 :(得分:1)

你对DataObjects,Pages&amp; amp;控制器。

UserDefinedForm page 类型包含表单构造。它们是页面,而不是单独的对象(一个不直接查询表单)。控制器是处理请求的部分,包含一个实际的表单处理程序。

您还没有指定版本,因此我将假设SilverStripe v3.1

您正在寻找的基本内容是:

public function ContactForm() {
    return ModelAsController::controller_for($this->ContactPage())->Form();
}
public function TestDriveForm() {
    return ModelAsController::controller_for($this->TestDrivePage())->Form();
}

可能会有更多的错误检查。

此代码还假设您的主页与UserDefinedForm页面有两个has_one关系,名为ContactPage和TestDrivePage。