1

orm 永続化ドライバーと JMSSerializerBundle シリアライザーで FOSElasticaBundle を使用しています。

私のユーザーは FOSUserBundle によって管理されており、これらをインデックス化しようとしていますが、パスワードなどのいくつかのフィールドを除外しています。

@ExclusionPolicy("all") @Expose @Exclude などの JMSSerializerBundle 除外ポリシーは、FOS\UserBundle\Model\User を拡張するユーザー エンティティに追加しても影響を受けません。ただし、これらの戦略は私の他のエンティティで期待どおりに機能します。

「salt」や「password」などのフィールドが Elasticsearch インデックスに追加されないようにするにはどうすればよいですか?

4

2 に答える 2

0

回避策として、'query_builder_method'FOSElasticaBundle 構成設定を使用して queryBuilder を作成するメソッドを呼び出しています。このメソッドは、DQL 部分オブジェクト構文を使用して、インデックスを作成するフィールドのみを選択します。

役立つリンクを次に示します。

DQL 部分オブジェクト構文: http://docs.doctrine-project.org/en/2.1/reference/dql-doctrine-query-language.html#partial-object-syntax

カスタム Doctrine Query Builder を使用します: https://github.com/FriendsOfSymfony/FOSElasticaBundle#use-a-custom-doctrine-query-builder

于 2014-01-28T14:49:17.787 に答える
0

これは、Serializer と注釈に関する既知のことです。親 (=FOS UserBundle) モデルでも除外戦略を定義する必要があります。

追加のyaml構成で解決しました:

これは私の設定です:

jms_serializer:
    metadata:
        directories:
            - { path: %kernel.root_dir%/Resources/serializer/FOS, namespace_prefix: 'FOS\UserBundle' }

そして、そのフォルダー内には、たとえば、次の内容の User.Model.yml があります。

FOS\UserBundle\Model\User:
    exclusion_policy: ALL
    properties:
        email:
            expose: true
于 2014-02-19T09:48:53.670 に答える