5

我想使用ExclusionPolicy,但我不斷收到「Annotation does not exist,could not be auto-loaded」錯誤。JMSSerializer和FOSRestBundle - 註解不起作用。 「不存在」

這裏是被拋出確切的錯誤:

[語義錯誤]在 的Acme \ DemoBundle \實體\屬性不存在類註釋 「@JMS \ SerializerBundle \註釋\ ExclusionPolicy」,或不能自動加載 。

我的代碼如下:

namespace Acme\DemoBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints; 
use JMS\SerializerBundle\Annotation\ExclusionPolicy; 
use JMS\SerializerBundle\Annotation\Expose; 

/** 
* Acme\DemoBundle\Entity\Attributes 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="Acme\DemoBundle\Entity\AttributesRepository") 
* 
* @ExclusionPolicy("all") 
*/ 
class Attributes 
{ 
    ... 
} 

回答

10

你的問題是使用了錯誤的命名空間而引起的。

相反的:

use JMS\SerializerBundle\Annotation\ExclusionPolicy; 
use JMS\SerializerBundle\Annotation\Expose; 

它應該是:

use JMS\Serializer\Annotation\ExclusionPolicy; 
use JMS\Serializer\Annotation\Expose; 

通知 「包」 走了。在Ver 0.11它被提取到它自己的存儲庫。

更改日誌如下:

  • 命名空間更改

核心庫已經被壓縮到一個專用的存儲庫 schmittjoh/serializer,使其更容易重複使用任何種類的PHP 項目,不僅在Symfony2項目中。這會導致幾個 命名空間更改。 > JMS \串行

  • JMS \ SerializerBundle - - > JMS \串行
  • JMS \串行\

    • JMS \ SerializerBundle \串行:您可以通過執行這些 替代(按順序)調整項目DependencyInjection - > JMS \ SerializerBundle \ DependencyInjection

    • 依賴性變動

    根據您的穩定性設置,您可能需要增加jms/di-extra-bundle的版本,以及 jms/security-extra-bundle。 有時候還需要運行一次作曲家更新兩次,因爲作曲家求解算法中存在一個錯誤 。