5

Próbuję użyć ExclusionPolicy, ale wciąż otrzymuję komunikat "Adnotacja nie istnieje lub nie może być automatycznie ładowany".JMSSerializer i FOSRestBundle - Adnotacje nie działają. "Nie istnieje"

Oto dokładny błąd wypadnięcia:

[semantyczne Błąd] Adnotacja "@JMS \ SerializerBundle \ Adnotacja \ ExclusionPolicy" w klasie Acme \ DemoBundle \ Entity \ atrybutów nie istnieje, lub nie może być automatycznie ładowany.

Mój kod wygląda następująco:

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 
{ 
    ... 
} 

Odpowiedz

10

problem jest spowodowany przez użycie niewłaściwego nazw.

Zamiast:

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

Powinno być:

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

Wskazówka "Bundle" nie ma. W Ver 0.11 został wyodrębniony do własnego repozytorium.

Lista zmian przedstawia się następująco:

  • nazw Zmienia

Biblioteka rdzeń zostały wyeksportowane do specjalnego repozytorium schmittjoh/serializer celu ułatwienia ponownego użycia w jakiejkolwiek projektu PHP , nie tylko w projektach Symfony2. Powoduje to kilka zmian w przestrzeni nazw . Można dostosować swoje projekty, wykonując te zamienniki (w kolejności):

  • JMS \ SerializerBundle \ serializer -> JMS \ serializer
  • JMS \ SerializerBundle -> JMS \ serializer
  • JMS \ serializer \ wstrzykiwanie zależności -> JMS \ SerializerBundle \ wstrzykiwanie zależności

  • Zależność Zmiany

Konieczna może być poprawa wersji jms/di-extra-bundle, a także jms/security-extra-bundle w zależności od ustawień stabilności. Czasami konieczne jest również dwukrotne uruchomienie aktualizacji kompilatora, ponieważ błędu w algorytmie rozwiązywania problemu.