cmf快速入门之Model

你决定继续读10分钟Symfony CMF了吗?这是个好消息!在这一章,你将学习更多关于CMF默认的数据库层的知识。

这章会再次讨论PHPCR的存储层。但CMF的存储是可以混合创建的,这意味着他没有特定的存储系统。

 

熟悉PHPCR

PHPCR存储所有数据到一个大树状结构中。你能够比对一个文件系统的每个文件和目录包含的数据。这意味着所有的数据被存储,与PHPCR有关系,至少有一个其他数据:他的父节点。当然逆关系关系也是存在的,你也能获取一个数据元素的子节点。

让我们看一看上一章我们下载的标准版的树状。来到你的目录并执行下面命令:

PHPCR树状的结果是:

在PHPCR中每个数据都是一个被调用的节点。在这个树中,有13个节点和一个根节点(通过PHPCR被创建)。你可能已经看到您在前一节中创建的文档,他调用quick_tour(并且他的路径是/cms/simple/quick_tour)。当使用SimpleCmsBundle时,所有节点存储在/cms/simple路径。

每个节点都有属性,就是包含的数据。为你页面设置的content,title和label都被保存在quick_tour节点下的属性。你能够通过在dump命令行添加–props开关预览属性。

?之前,这个PHPCR树与一个文件系统比较。他给你一个良好的形象,对于发生的,但他不是真相。你可以更好的比作他为一个XML文件,这里每一个节点是一个元素并他的属性比作是XML属性。

 

Doctrine PHPCR-ODM

Symfony CMF使用 Doctrine PHPCR-ODM与PHPCR交互。Doctrine允许一个用户去创建对象(调用documents),直接持久化并从PHPCR中检索。这个类似于symfony2框架中Doctrine ORM的使用,但这是PHPCR。

用代码创建一个页面

现在你知道更多关于PHPCR的知识,并且你知道与它交互的工具,你自己可以开始使用它。在前面的章节中,你通过使用yaml文件创建一个页面,通过SimpleCmsBundle解析。这次,你将通过自己完成创建一个页面。

首先,你需要去创建一个新的DataFixture到你的新页面。在AcmeDemoBundle中创建一个新页面。

这个$documentManager对象将持久化这个document到PHPCR。但首先,你要创建一个新的document页面。

每个document都需要一个父元素,这个父元素应该是root节点。要做到这一点,我们首先要从PHPCR中获取root document,然后设置它作为父元素:

最后,我们告诉Document管理使用Doctrine API去持久化我们的页面文档:

现在你需要执行doctrine:phpcr:fixtures:load命令,然后你就能再次访问你的web页面了。你能够看到新添加的页面了:

the-model-new-page

如果你想知道更多关于symfony应用中如何使用PHPCR的请阅读”The Database Layer: PHPCR-ODM

 

总结

PHPCR是很强大的方法在CMS中存储你的页面。但,如果你感到不舒服,你可以使用别的存储层http://symfony.com/doc/master/cmf/cookbook/database/choosing_storage_layer.html。

我们回顾这些已经20分钟了,你应该已经学会了如何使用一个新的存储层工作并添加了2个新页面。你看到你制作的应用程序在CMF中是如何简单的工作了吗?他提供的很多东西,在以前你可能都要自己完成。

但现在你只看到一个CMF的小部分,还有很多要学习的东西在等着你。在做这些所有事情之前,你要先了解CMF的主干:路由系统。在下一章你会了解更多关于他的信息。准备好另一个10分钟了吗?

 

发表评论