gpt4 book ai didi

Symfony2 JMSSerializerBundle 在 YML 中公开属性

转载 作者:行者123 更新时间:2023-12-02 10:34:46 25 4
gpt4 key购买 nike

我只想使用 JMSSerializerBundle 和 FOSRestBundle 公开 User 类的几个属性。序列化程序包似乎没有读取我的配置文件。

我的用户类别位于 src/AppBundle/Entity/User并且它扩展了 FOSUserBundle 用户类。

这是我的用户类:

  <?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
use Symfony\Component\Validator\Constraints as Assert;

/**
* User
*
* @ORM\Table(name="backoffice_user")
* @ORM\Entity(repositoryClass="AppBundle\Entity\Repository\UserRepository")
*/
class User extends BaseUser
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @var string
*
* @ORM\Column(name="lastname", type="string", length=70)
*/
private $lastname;

/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=70)
*/
private $firstname;
}

这是我的 app/config.yml 文件

jms_serializer:
metadata:
debug: true
auto_detection: true

以及 src/AppBundle/Resources/config/serializer/Entity.User.yml 中的 yml mappgin 文件:

AppBundle\Entity\User:
exclusion_policy: ALL
exclude: true
properties:
email:
exclude: true
expose: true

该文件未被读取(或至少未被考虑),因为我的 API 返回我实体的所有字段。

我是不是忘记了什么?

最佳答案

您的映射文件未加载,因为序列化程序将规则应用于定义属性的类。在您的情况下 - 即 FOS\UserBundle\Model\User。您需要的是覆盖第三方元数据 - 可以在 bundle 的 documentation 中看到一个简短的示例。

在您的 config.yml 中,jms_serializer 可能应如下所示:

jms_serializer:
metadata:
auto_detection: true
directories:
FOSUserBundle:
namespace_prefix: "FOS\\UserBundle"
path: "@AppBundle/Resources/config/serializer"

在目录serializer中,您应该有一个名为Model.User.yml的文件,其配置如下:

FOS\UserBundle\Model\User:
exclusion_policy: ALL
# add your desired configuration below.

关于Symfony2 JMSSerializerBundle 在 YML 中公开属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30532030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com