Symfony と FOSRestBundle を使用して RESTful アプリを作成しています。FOSRestBundle は、JMS シリアライザーを使用して、データを json 形式にシリアル化します。私はすべてが1つの小さな問題で機能しています。
これは私のエンティティクラスです
/**
* Post
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Tomalo\AdminBundle\Entity\PostRepository")
* @ExclusionPolicy("none")
*/
class Post
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="content", type="text")
* @Assert\NotBlank()
*/
private $content;
/**
* @var float
*
* @ORM\Column(name="lat", type="float")
* @Assert\NotBlank()
*/
private $lat;
/**
* @var float
*
* @ORM\Column(name="lon", type="float")
* @Assert\NotBlank()
*/
private $lon;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @var string
*
* @ORM\Column(name="sign", type="string", length=50, nullable=true)
* @Expose
*/
private $sign;
/**
* @var integer
*
* @ORM\Column(name="status", type="integer")
*/
private $status=0;
/**
* @var integer
*
* @ORM\Column(name="points", type="integer")
*/
private $points=0;
/**
* @var string
*
* @ORM\Column(name="uuid", type="string", length=43)
* @Assert\NotBlank()
* @Exclude
*/
private $uuid;
private $owner;
//get/set method continue
これは私が得るjsonです:
{
"id": 5,
"content": "zxcvzxcvzxc",
"lat": 37.422005,
"lon": -122.084095,
"date": "2013-05-20T05:06:57+0100",
"status": 0,
"points": 0,
"owner": 0
}
私のエンティティでは、 $uuid は @Exclude アノテーションを持つ唯一のプロパティであり、期待どおりにはありませんが、 $sign プロパティも欠落しています。ご覧のとおり、@Expose アノテーションを $sign に付けましたが、何も変更していません。@ExclusionPolicy("all") を使用して、uuid を除くすべてを公開しようとしましたが、取得しています
Warning: json_encode(): recursion detected in E:\workspace\htdocs\tomalo\vendor\jms\serializer\src\JMS\Serializer\JsonSerializationVisitor.php line 29
PHPのバグであるため、いくつかの情報を見つけました
何が間違っていて、それを修正する方法はありますか?