SilverStripe MultiForm 不工作
SilverStripe MultiForm not working
我在我的服务器上安装并配置了 SilverStripe。我安装了 MultiForm module 并按照模块文档中的说明进行操作。
按照说明进行操作后,我仍然没有在我的 CMS 门户中看到任何新的页面类型。
我也尝试了 db/build?flush=1
和 dev/build?flush=1
,但没有什么区别。
我在 mysite/code/
目录中创建了以下文件
SponsorSignupForms.php
class SponsorSignupForms extends MultiForm{
protected static $start_step = 'CompanyDetailsStep';
}
CompanyDetailsStep.php
class CompanyDetailsStep extends MultiFormStep{
public static $next_steps = 'ContactDetailsStep';
function getFields()
{
$fields = singleton('Member')->getFrontendFields();
return $fields;
}
function getValidator()
{
return new Member_Validator('FirstName', 'Surname', 'Email', 'Password');
}
}
ContactDetailsStep.php
class ContactDetailsStep extends MultiFormStep{
public static $is_final_step = true;
function getFields()
{
$fields = singleton('Reference')->getFrontendFields();
return $fields;
}
}
如何使这些自定义 MultiForms 工作并显示为可创建的页面?
当然你在可用页面列表中看不到任何新的页面类型,你只会在那里看到 SiteTree
的子类,MultiFormStep
是 "just" 的子类DataObject
。
您可以将您的表单手动插入到您想要的每个页面,但您也可以为您的表单创建一个新的页面类型并将该表单包含在您的控制器和模板中,请参阅 readme of MultiForm:
class MyFormPage extends Page
{
}
class MyFormPageController extends Page_Controller
{
//
private static $allowed_actions = array(
'SponsorSignupForms',
'finished'
);
public function SponsorSignupForms() {
return new SponsorSignupForms($this, 'Form');
}
public function finished() {
return array(
'Title' => 'Thank you for your submission',
'Content' => '<p>You have successfully submitted the form!</p>'
);
}
}
在模板中只包含以下形式:
<% if $SponsorSignupForms %>
$SponsorSignupForms
<% end_if %>
您现在应该会看到表格。
我在我的服务器上安装并配置了 SilverStripe。我安装了 MultiForm module 并按照模块文档中的说明进行操作。
按照说明进行操作后,我仍然没有在我的 CMS 门户中看到任何新的页面类型。
我也尝试了 db/build?flush=1
和 dev/build?flush=1
,但没有什么区别。
我在 mysite/code/
目录中创建了以下文件
SponsorSignupForms.php
class SponsorSignupForms extends MultiForm{
protected static $start_step = 'CompanyDetailsStep';
}
CompanyDetailsStep.php
class CompanyDetailsStep extends MultiFormStep{
public static $next_steps = 'ContactDetailsStep';
function getFields()
{
$fields = singleton('Member')->getFrontendFields();
return $fields;
}
function getValidator()
{
return new Member_Validator('FirstName', 'Surname', 'Email', 'Password');
}
}
ContactDetailsStep.php
class ContactDetailsStep extends MultiFormStep{
public static $is_final_step = true;
function getFields()
{
$fields = singleton('Reference')->getFrontendFields();
return $fields;
}
}
如何使这些自定义 MultiForms 工作并显示为可创建的页面?
当然你在可用页面列表中看不到任何新的页面类型,你只会在那里看到 SiteTree
的子类,MultiFormStep
是 "just" 的子类DataObject
。
您可以将您的表单手动插入到您想要的每个页面,但您也可以为您的表单创建一个新的页面类型并将该表单包含在您的控制器和模板中,请参阅 readme of MultiForm:
class MyFormPage extends Page
{
}
class MyFormPageController extends Page_Controller
{
//
private static $allowed_actions = array(
'SponsorSignupForms',
'finished'
);
public function SponsorSignupForms() {
return new SponsorSignupForms($this, 'Form');
}
public function finished() {
return array(
'Title' => 'Thank you for your submission',
'Content' => '<p>You have successfully submitted the form!</p>'
);
}
}
在模板中只包含以下形式:
<% if $SponsorSignupForms %>
$SponsorSignupForms
<% end_if %>
您现在应该会看到表格。