如何在doctrine / phpcr-bundle中创建自定义PHPCRBundle初始化程序" dev-master":" 1.1-dev"

时间:2014-04-10 01:19:20

标签: doctrine-odm symfony-cmf

我正在遵循教程Creating a Basic CMS,当我为我的网站文档类创建自定义初始化程序时遇到困难,symfonycmf cook book页面中的文档使用doctrine / phpcr-bundle 1.0和i&# 39; m使用dev-master 1.1-dev,我使用dev-master版本的原因是因为使用该配置我的依赖项工作正常

1 个答案:

答案 0 :(得分:0)

仔细检查了两个版本后,我意识到两个版本之间的差异并不大,在1.0版本中,Doctrine \ Bundle \ PHPCRBundle \ Initializer \ InitializerInterface在他的init中注入了一个PCR \ SessionInterface对象方法,那个会话对象就像doctrine orm的实体管理器一样,我认为,因为它执行save方法来预先设置odm,但是在当前的主版本中接口注入一个Doctrine \ Bundle \ PHPCRBundle \ ManagerRegistry并且用这个对象你可以使用$ session = $ registry-> getConnection()方法获取连接会话;这是代码示例。

class SiteInitializer implements InitializerInterface {


    public function init(ManagerRegistry $registry) {

          $session = $registry->getConnection();
          NodeHelper::createPath($session, '/cms/pages');
          NodeHelper::createPath($session, '/cms/posts');
          NodeHelper::createPath($session, '/cms/routes');
          $session->save();
          $cms = $session->getNode('/cms');
          $cms->setProperty(
              'phpcr:class',  'Acme\BasicCmsBundle\Document\Site'
          );

          $session->save();

    }
}

@dbu感谢你和你的tean在symfony cmf这项伟大的工作,我希望你能检查这个问题,如果你发现任何错误或错误,请纠正我们,如果我们做错了。