簡體   English   中英

Symfony2 控制器中的 JMS 序列化程序排除實體字段

[英]JMS Serializer Exclude Entity field in Symfony2 Controller

我有一個實體,我想在我正在開發的 JSON API 中公開它,問題是在這個特定的控制器中,只有一個我不想公開的字段。 有沒有辦法將它從控制器內部的序列化中排除?

我知道我可以注釋我的實體,因此序列化程序只會通過該字段,但是在所有其他情況下會發生什么? 這真的是個例外。

您可以將每個屬性分配給一個組,然后在從控制器序列化時在上下文中定義該組。

您的實體:

use JMS\Serializer\Annotations as Serializer;

class Comment
{
    /** @Serializer\Groups({"main", "secondary"}) */
    private $id;

    /** @Serializer\Groups({"main", "secondary"}) */
    private $title;

    /** @Serializer\Groups({"main", "secondary"}) */
    private $name;

    /** @Serializer\Groups({"main"}) */
    private $email;

    /** @Serializer\Groups({"main", "secondary"}) */
    private $message;
}

然后在你的控制器中

use JMS\Serializer\SerializationContext;

$serializer->serialize(
    new Comment(),
    'json',
    SerializationContext::create()->setGroups(array('secondary'))
);

在此示例中,電子郵件字段從序列化數據中排除,但僅適用於名為secondary的組。 您當然可以隨意稱呼這些組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM