php - SilverStripe MultiForm 不工作

标签 php registration silverstripe add-on

我在我的服务器上安装并配置了 SilverStripe。我安装了 MultiForm module并按照模块文档中的说明进行操作。

按照说明操作后,我仍然没有在我的 CMS 门户中看到任何新的页面类型。

我也尝试了 db/build?flush=1dev/build?flush=1 但没有什么区别。

我在 mysite/code/ 目录中创建了以下文件

SponsorSignupForms.php

class SponsorSignupForms extends MultiForm{
    protected static $start_step = 'CompanyDetailsStep';
}

CompanyDetailsS​​tep.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');
    }
}

ContactDetailsS​​tep.php

class ContactDetailsStep extends MultiFormStep{
    public static $is_final_step = true;
    function getFields()
    {
        $fields = singleton('Reference')->getFrontendFields();
        return $fields;
    }
}

如何让这些自定义 MultiForms 工作并显示为可创建的页面?

最佳答案

当然,您在可用页面列表中看不到任何新页面类型,您只会在那里看到 SiteTree 的子类,MultiFormStep“只是”一个DataObject 的子类。

您可以将您的表单手动插入到您想要的每个页面,但您也可以为您的表单创建一个新的页面类型并将该表单包含在您的 Controller 和模板中,请参阅 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 %>

现在您应该会看到表格。

关于php - SilverStripe MultiForm 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29747418/

相关文章:

php - MySQL多选?

c# - 如何部署 COM

php - Silverstripe:清理 URL

php - 需要将选择 ID 作为表单的一部分提交,我该怎么做?

javascript - SilverStripe 前端 Ajax 博客文章使用 'read more' 按钮加载

content-management-system - silverstripe 3 addFieldToTab "Settings"

php - 如何在没有循环的情况下将mysql数组加载到数组中?

php - iOS obj-c上传图像到mysql,afnetworking

javascript - 如何包含另一个网页的分区并将其放入分区中?

android - 何时进行 GCM 注册