tl;dr
如何将基础变压器从弹性结果扩展/覆盖到FosElasticaBundle中的理论实体?
详细信息
我想在transform中更改FOS\ElasticaBundle\Doctrine\AbstractElasticaToModelTransformer方法,以便可以向检索到的实体添加一个自定义属性。
我用黑客的方法进行了测试,它的工作原理完全符合我的要求。
在不侵入该方法的情况下,覆盖/扩展该方法的最佳解决方案是什么?
发布于 2015-09-15 15:35:35
您可以重写转换器,并通过创建新服务来定义自己的转换器。完整的故事可以在http://obtao.com/blog/2014/05/advanced-indexing-with-elasticsearch-foselasticabundle/上阅读
简短:首先定义这样的服务(在我的例子中,我只索引一个特定的实体):
myapp.elastica_to_model.transformer.company:
class: AppBundle\Transformers\ElasticaToCompanyTransformer
arguments: [ @doctrine, "AppBundle\Entity\Company" ]
calls:
- [ setPropertyAccessor, ["@fos_elastica.property_accessor"] ]
tags:
- { name: fos_elastica.elastica_to_model_transformer.app.company }然后创建实际的服务类,在该类中扩展原始转换器并重写transform方法。
最后,您告诉FosElastica使用此转换器而不是原来的转换器:
fos_elastica:
indexes:
app:
types:
company:
mappings:
...
persistence:
...
elastica_to_model_transformer:
service: myapp.elastica_to_model.transformer.companyhttps://stackoverflow.com/questions/32460632
复制相似问题