【发布时间】:2015-09-18 16:37:51
【问题描述】:
我在 Symfony CMF 组件/捆绑包之上构建了一个非常自定义的 CMS。我几乎阅读了有关 CMF 组件/捆绑包的所有内容,并且我已经定义了“架构”。我有经验/熟悉 Symfony2 组件。
CMS 应提供一种管理多个站点的方法。 站点包含页面。 一个页面,需要一个标题并且可能有内容。页面还可以关联块(块包已经提供的块,以及我为 CMS 开发的具有自定义功能的其他块)。
现在我定义了两个文档(站点和页面)。 根据应用需求,我使用 CoreBundle、BlockBundle、RoutingBundle、DoctrinePHPCRBundle 和 DoctrinePHPCRAdminBundle。
基于此要求,预期的存储库树应类似于:
/sites
/site1 ( nodename of the Site Document )
/pages ( all pages of this site )
/page1 ( nodename of a Page Document )
/page2
/routes ( all routes of this site )
/site2
/pages
...
CoreBundle 的配置:
cmf_core:
persistence:
phpcr:
basepath: /sites
enabled: true
因为我需要每个站点的节点(/pages,/routes),我该如何初始化它们?我的第一个想法是初始化所需节点的站点文档的 onPostPersist 事件。
use PHPCR\Util\NodeHelper;
...
public function initSiteNodes(ManagerRegistry $registry, Site $site)
{
$session = $registry->getConnection();
NodeHelper::createPath($session, $site->getId()./pages);
NodeHelper::createPath($session, $site->getId()./routes);
$session->save();
}
所以我的问题是:
这种架构是否可行,SonataAdminBundle 是否为这种架构做好了准备?
【问题讨论】:
标签: symfony-cmf