Symfony2:将php sdk工具包扩展到自定义包

Symfony2:将php sdk工具包扩展到自定义包,php,symfony,twig,bundle,Php,Symfony,Twig,Bundle,使用Symfony2、细枝和棱镜: 我已经阅读了以下参考资料,但是我仍然不清楚如何在Symfony2中扩展某些方法 我的供应商目录中有一个prismic文件夹,其中包括以下目录: vendors/prismic php-sdk prismic-bundle 对于我的应用程序,我复制了prismic bundle目录并将其移动到此处: src/VAP/Bundle/PrismicBundle 然后更改AppKernal.php以包含此捆绑包: // new Prismi

使用Symfony2、细枝和棱镜:

我已经阅读了以下参考资料,但是我仍然不清楚如何在Symfony2中扩展某些方法

我的供应商目录中有一个prismic文件夹,其中包括以下目录:

vendors/prismic
     php-sdk
     prismic-bundle
对于我的应用程序,我复制了prismic bundle目录并将其移动到此处:

src/VAP/Bundle/PrismicBundle
然后更改AppKernal.php以包含此捆绑包:

// new Prismic\Bundle\PrismicBundle\PrismicBundle() ..removed the connection to the vendor dir

new VAP\Bundle\PrismicBundle\PrismicBundle() ..use this custom directory
这很好用

但是,PHPSDK目录中有一些方法是从我的自定义PrismicBundle调用的,我需要扩展或覆盖这些方法。例如,细枝模板可以调用

var.getStructuredText('blog.body').asHtml(ctx.linkResolver)

位于此处:

供应商/prismic/php sdk/src/prismic/Fragment/StructuredText.php

如何/在何处创建扩展/覆盖上述文件的文件


我还不清楚php sdk是一个捆绑包,还是来自供应商目录的原始PrismicBundle的一部分?

首先,您说您在src文件夹中复制了PrismicBundle,为什么不使用捆绑包继承过程

public function getParent()
{
    return 'PrismicBundle';
}
对于您的问题,您必须更改prismic php sdk的行为,可能的原因如下:

  • 1) 这个sdk构建得不好
  • 2) 你没有正确地使用它
  • 3) 您需要prismic不支持的非常自定义的行为
在国际海事组织,可能的解决办法是:

  • 1) 使用sdk为您的需要添加兼容性
  • 2) 想一个不同的方法来满足你的需求
  • 3) 在自定义PrismicBundle中创建一个新服务,根据需要调用PrismicAPI

fa关于最后一个问题,afaik prismic/php sdk是原始php中的api实现,prismic/prismic bundle是这个原始php sdk和Symfony之间的桥梁,实现了Symfony提供的服务和所有组件。

我尝试使用继承,但无法使其正常工作。当使用继承时,我应该将覆盖供应商提供的自定义函数放在哪里?本文档解释了如何覆盖捆绑包的任何部分:如果要覆盖PrismicBundle中的服务,请查看“CompilerPass”使用bundle继承很重要,因为您可以更轻松地升级到bundle的较新版本,但只覆盖需要自定义的功能。我在重写twig模板时遇到了一些问题,只需清除缓存即可使新文件生效,即使在开发阶段也是如此。在供应商目录中,我不确定php sdk是否是一个捆绑包。目录结构如下:vendor/prismic/src/prismic/Fragment/StructuredText.php。文档不太清楚如何用自定义类重写StructuredText类。文档引用覆盖捆绑包中的控制器。我正在尝试扩展PHPSDK目录中的一个类。这是服务吗?这是您正在使用的捆绑包吗?