在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}}添加到主页模板?
答案 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。