【发布时间】:2022-01-02 18:03:12
【问题描述】:
有很多类似的问题,其中一些有经过验证的答案,但我在这里,但没有一个有效。
我的用例非常简单:
-
我的用户
App\Client\common\Entities\User属于客户App\Client\common\Entities\Customer。 -
App\Client\common\Entities\User也继承了FOS\UserBundle\Model\User,其中包含神圣属性“email”
我想对我的所有客户及其用户(包括他们的邮件)进行序列化。 Jms 工作得很好,只是我无法访问 FOS\UserBundle\Model\User 类的属性。
关注this answer 这是我现在所拥有的。
jms_serializer.yml
jms_serializer:
#blablablaa....
metadata:
auto_detection: true
directories:
App:
namespace_prefix: 'App\Client'
path: '%kernel.project_dir%/serializer'
FOSUB:
namespace_prefix: 'FOS\UserBundle'
path: '%kernel.project_dir%/serializer'
序列化器/App.Client.common.Entities.User.yml:
App\Client\common\Entities\User:
exclusion_policy: ALL
properties:
surname:
expose: true
exclude: false
groups: [export]
序列化器/Model.User.yml:
FOS\UserBundle\Model\User:
exclusion_policy: ALL
properties:
email:
expose: true
exclude: false
groups: [export]
src/Command/DeploySyncUsersCommand.php:
protected function execute(InputInterface $input, OutputInterface $output)
{
$users = $this->customerRepository->findAll(); //this is an array of Customer
$context = new SerializationContext();
$context->setGroups(['export']);
$serializer = SerializerBuilder::create()->build();
$json = $serializer->serialize($users, 'json', $context);
// do something with json
}
一切正常,除了 json 不包含电子邮件或任何 FOSUser\User 数据。
另外有趣的是,我可以在 App.Client.common.Entities.User.yml 和 Model.User.yml 文件中写入任何内容(甚至是无效的 yml),我能够毫无错误地清除缓存。在 jms_serializer.yml 中写入无效 yml 时出现错误
【问题讨论】:
标签: jms symfony4 fosuserbundle