Silverstripe - 如何创建页面作为部署的一部分?

Silverstripe - How To Create Pages as Part of a Deployment?

我有一个基于 silverstripe 的 Web 应用程序,它正在积极开发中,并定期部署到我们的开发、QA、UAT 等环境中。目前,我们为那些复制文件、执行 composer 安装和 运行 dev/build 的部署提供了自动化作业,所有这些都来自命令行,以便我的开发更改可以轻松部署到我们的各种环境中。

缺少的是,当我创建一个新页面时,我必须在部署后手动进入环境并登录到/admin Pages -> Add New -> Select Page Type ->填写表格并点击发布。

有没有办法使该过程自动化?我无法在文档中找到任何信息,也无法在代码中找到任何定义这些页面存在的信息——它们是否只存在于数据库中?页面名称和路径始终相同,因为我们应用程序的其他部分需要知道指向何处才能运行。

提前致谢,

"deploy pages"有不同的方法。

如果你只是想镜像你的开发数据库和资产,你可以使用sspak

如果您的模块想要确保某些默认页面或数据对象存在,您可以在数据对象上使用方法 requireDefaultRecords()。这是每个 dev/build 上的 运行 并检查它是否应该添加一些东西。 DataObject::requireDefaultRecords() 的文档块说:

Add default records to database. This function is called whenever the database is built, after the database tables have all been created. Overload this to add default records when the database is built, but make sure you call parent::requireDefaultRecords().

@uses DataExtension->requireDefaultRecords()

当我不知道页面的实际内容时,我经常在本地添加数据。但是为了设置给定的站点结构或数据结构,有一个 module called Populate,您可以在其中定义 yml 文件中的数据和 运行 一个将其添加到数据库的构建任务。

这个模块非常灵活,您可以擦除数据库 table 并重新填充它,或者您可以检查给定页面是否存在并更新它等。