【问题标题】:SilverStripe MultiForm not workingSilverStripe MultiForm 不工作
【发布时间】:2015-04-20 12:04:57
【问题描述】:

我在我的服务器上安装并配置了 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;
    }
}

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

【问题讨论】:

  • 我猜你使用的是 SilverStripe 3.1。注意 3.1 db/build?flush=1 不会做任何事情。 dev/build?flush=1 应该为您构建任何数据库更改。当您致电dev/build?flush=1 时,您是否看到“Environment Builder”屏幕?
  • @3dgoo dev/build?flush=1 在这个屏幕上我找到了我的页面ContactDetailsStepCompanyDetailsStepSponsorSignupForms,但它没有显示在页面类型中,感谢编辑
  • @3dgoo 是的,我使用的是 silverstripe 3.1

标签: php registration silverstripe add-on


【解决方案1】:

当然,您在可用页面列表中看不到任何新的页面类型,您只会看到SiteTree 的子类,MultiFormStep“只是”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 %>

您现在应该可以看到表单了。

【讨论】:

  • 我检查了自述文件,我的团队成员配置/安装不正确,所以它没有显示,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多