使用Symfony2, Twig和prism:
我已经看了下面的参考资料,但是我仍然不清楚如何扩展Symfony2
中的某些方法http://symfony.com/doc/current/cookbook/bundles/inheritance.htmlhttp://symfony.com/doc/current/cookbook/bundles/override.html
在我的供应商目录中有一个棱镜文件夹,其中包括以下目录:
vendors/prismic
php-sdk
prismic-bundle
对于我的应用程序,我复制了prism -bundle目录并将其移动到这里:
src/VAP/Bundle/PrismicBundle
然后修改appkernel .php来包含这个包:
// new Prismic'Bundle'PrismicBundle'PrismicBundle() ..removed the connection to the vendor dir
new VAP'Bundle'PrismicBundle'PrismicBundle() ..use this custom directory
可以正常工作。
然而,php-sdk目录中有一些方法是从我的自定义PrismicBundle中调用的,我需要扩展或覆盖它们。例如,一个小枝模板可以调用
var.getStructuredText('blog.body').asHtml(ctx.linkResolver)
位于这里:
供应商/prismic/php-sdk/src/prismic/片段/StructuredText.php
我如何/在哪里创建一个文件来扩展/覆盖上面的文件?
我也很困惑,如果php-sdk是一个捆绑包,或者它是从供应商目录的原始PrismicBundle的一部分?
首先,你说你在src文件夹中复制了PrismicBundle,为什么你不使用bundle继承过程呢?
public function getParent()
{
return 'PrismicBundle';
}
对于你的问题,你必须改变棱镜php-sdk的行为,可能的原因:
- 1)这个sdk没有很好地构建
- 2)你没有正确使用
- 3)你想要一个非常自定义的行为不支持棱镜
在我看来,可能的解决办法是:
- 1) Fork sdk以增加兼容性
- 2)考虑不同的方式来满足你的需求
- 3)在你的自定义PrismicBundle中创建一个新的服务,根据你的需要调用prismic api。
喜欢你的最后一个问题,afaik prism/php- SDK是原始php中的api实现,而prism/prism -bundle是这个原始php SDK和Symfony之间的桥梁,实现服务和Symfony提供的所有商品。