1

我非常喜欢 symfony cmf。把整个文档和食谱都涂红。现在我想创建我的第一个 cms 应用程序。获取基于沙盒的入门套件非常容易。这行得通。我能够创建和管理来自所有捆绑包的所有文档。我能够设置渲染。但是我如何处理可以包含 cmf 某些部分的自定义文档?

例如,我想为记者编写一个文章包来管理其文章。这些文章可以包含文本、标题、一些图像或其他文档,如 pdf。它们被称为组,也可以是文档,因为我想给它们一些文本、标题和图像。

这应该是 cms 的典型任务,我想用 symfony cmf 解决它。但正确的方法是什么?

  1. 最简单的方法:使用基本文档,但这意味着我必须让 cms 管理员创建一些块并将它们组合起来,或者创建一个静态内容文档并引用一些图像块。只有通过在配置中设置一些选项,用于渲染前端视图的控制器才能独立工作。

  2. 创建一个可以从 AbstractBlock 或 StaticContent 继承的 ArticleDocument,并添加一些我需要的更多信息。这里我需要编写一个自己的Controller并在配置文件中设置hin。这样,我可以在后端提供一个“ArticleDocument 项目”来管理,并且没有独立基础文档的列表,这对于只想管理其文章的 cms 管理员可能会感到困惑

  3. 基于 phpcr 创建一个独立的 ArticleDocument,可能包含一些菜单和路由所需的属性。但随后我会编写一个完整的新控制器并将“我的”信息映射到一些 cmf 块或内容文档以呈现它们。

这个问题的一部分是基于我缺乏处理文档的经验。我需要在对象上获得更好的“文档视图”而不是“RDMS 视图”。但我想通过使用 symfony cmf 来学习它。

是否有一些构建自定义文档的示例?沙盒很酷,但只显示了 DemoBundle 中的前端工作。

4

1 回答 1

5

一般来说,我发现创建自己的模型和管理类非常容易,因此我建议您定义自己的模型和管理类,而不是从核心模型和管理类扩展。

至于使用块与仅使用属性或更具体的子文档。块都是关于可重用性的,能够更独立地管理和独立缓存。如果您需要其中任何一个,请使用块,否则创建自定义文档(层次结构)可能会更容易。

现在谈到属性与儿童。由于没有空属性的开销,因此只需将所有内容添加为属性即可使结构保持为您想要的平坦。如果您想更独立地管理事物或创建内容单元,则孩子很有用。例如,如果您有一个图像和该图像的一些元数据,则使用子节点来存储二进制文件和元数据是合乎逻辑的,因为如果您想移动或删除该图像,则需要将它们全部删除。

于 2013-12-23T21:02:36.760 回答