JMSSerializerBundle でこの問題が発生しています。基本的に、私がすでに行ったことの例外を与えてくれます。これは私のエンティティです:
注釈行に関する混乱を避けるために編集
<?php
namespace My\ProjectBundle\Entity;
use JMS\SerializerBundle\Annotation\Type;
use Doctrine\ORM\Mapping as ORM;
/**
* My\ProjectBundle\Entity\Music
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="My\ProjectBundle\Entity\MusicRepository")
*/
class Music extends Post
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string $album
*
* @ORM\Column(name="album", type="string")
* @Type("string")
*/
protected $album;
/**
* @var string $artist
*
* @ORM\Column(name="artist", type="string")
* @Type("string")
*/
protected $artist;
/**
* @var integer $duration
*
* @ORM\Column(name="duration", type="bigint")
* @Type("int")
*/
protected $duration;
/**
* @var string $title
*
* @ORM\Column(name="title", type="string")
* @Type("string")
*/
protected $title;
/**
* @var array $genres
*
* @ORM\Column(name="genres", type="array")
* @Type("array")
*/
protected $genres;
ご覧のとおり@Type()
、フィールドに注釈を追加しましたが、呼び出し時に例外が発生します。
$listenedMusic = $serializer->deserialize($content, 'My\ProjectBundle\Entity\Music', 'json');
確認したところ、$content
変数は空ではなく、すべてのフィールドが JSON 形式でマップされています。
私のMonologファイルでは、これは正確な例外です:
[2012-11-29 23:39:07] request.CRITICAL: JMS\SerializerBundle\Exception\RuntimeException:
You must define a type for My\ProjectBundle\Entity\Music::$album. (uncaught exception)
at /vendor/jms/serializer-bundle/JMS/SerializerBundle/Serializer/GenericDeserializationVisitor.php line 177
それでもこの例外が発生するのはなぜですか?