首页 > 解决方案 > 如何覆盖 SilverStripe 的用户定义表单的模板/视图

问题描述

我正在为学习目的开发一个简单的 SilverStripe 项目。我正在使用SilverStripe 用户定义表单模块来创建表单页面。

用户定义的表单模块在模板/视图中呈现表单的方式是在内容字段中使用 $UserDefinedForm 变量。现在,我需要对内置的用户定义表单模板进行一些自定义。所以我决定覆盖控制器和页面。

这是我的活动页面

<?php

namespace {

    use SilverStripe\UserForms\Model\UserDefinedForm;

    class EventPage extends UserDefinedForm
    {

    }
}

这是我的 EventPageController

<?php

namespace {

    use SilverStripe\UserForms\Control\UserDefinedFormController;

    class EventPageController extends UserDefinedFormController
    {
        
    }
}

这是我的 EventPage.ss

<h1>Event Page</h1>

$UserDefinedForm

此页面已被覆盖,但未呈现表单。如何呈现表单?

标签: silverstripesilverstripe-4

解决方案


一个完整的答案可能会有所帮助。联系页面.php

命名空间 InsiteApps\CMS\Model {

use SilverStripe\UserForms\Control\UserDefinedFormController;
use SilverStripe\UserForms\Model\UserDefinedForm;

class ContactPage extends UserDefinedForm
{
    private static $table_name = 'ContactPage';

}


class ContactPageController extends UserDefinedFormController
{

}

}

在您的主题中,模板文件夹(文件夹结构取决于您的命名空间)

模板/InsiteApps/CMS/模型/布局/ContactPage.ss

<div class="contact-page-form"> $Form </div>


推荐阅读