Bonjour,
Je suis en train de suivre le tutoriel de *BestCoder * : "Créez une API REST avec Symfony 3" et j’ai quelques problèmes avec l’utilisation du sérialiseur.
Je suis arrivé au moment ou j’ai besoin de JMSSerializer pour faire de la génération de doc mais tout ce que mes requêtes me retournent après sa mise en place est : {}.
Je vous mets ci-dessous les fichiers :
config.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | imports: - { resource: parameters.yml } - { resource: security.yml } - { resource: services.yml } # Put parameters here that don't need to change on each machine where the app is deployed # http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration parameters: locale: en jms_serializer.camel_case_naming_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy framework: #esi: ~ #translator: { fallbacks: ["%locale%"] } secret: "%secret%" router: resource: "%kernel.root_dir%/config/routing.yml" strict_requirements: ~ form: ~ csrf_protection: ~ validation: { enable_annotations: true } serializer: enabled: false templating: engines: ['twig'] default_locale: "%locale%" trusted_hosts: ~ trusted_proxies: ~ session: # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id handler_id: session.handler.native_file save_path: "%kernel.root_dir%/../var/sessions/%kernel.environment%" fragments: ~ http_method_override: true assets: ~ php_errors: log: true # Twig Configuration twig: debug: "%kernel.debug%" strict_variables: "%kernel.debug%" # Doctrine Configuration doctrine: dbal: driver: pdo_mysql host: "%database_host%" port: "%database_port%" dbname: "%database_name%" user: "%database_user%" password: "%database_password%" charset: UTF8 # if using pdo_sqlite as your database driver: # 1. add the path in parameters.yml # e.g. database_path: "%kernel.root_dir%/data/data.db3" # 2. Uncomment database_path in parameters.yml.dist # 3. Uncomment next line: # path: "%database_path%" orm: auto_generate_proxy_classes: "%kernel.debug%" naming_strategy: doctrine.orm.naming_strategy.underscore auto_mapping: true # Swiftmailer Configuration swiftmailer: transport: "%mailer_transport%" host: "%mailer_host%" username: "%mailer_user%" password: "%mailer_password%" spool: { type: memory } fos_rest: routing_loader: include_format: false view: view_response_listener: true formats: json: true xml: true format_listener: rules: - { path: '^/', priorities: ['json', 'xml'], fallback_format: 'json', prefer_extension: false } body_listener: enabled: true serializer: serialize_null: true exception: enabled: true messages: 'Symfony\Component\HttpKernel\Exception\HttpException' : true 'Symfony\Component\Security\Core\Exception\BadCredentialsException': true codes: 'Symfony\Component\Security\Core\Exception\BadCredentialsException': 401 jms_serializer: handlers: datetime: default_format: "Y-m-d\\TH:i:sP" default_timezone: "UTC" |
UserController.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Request; use FOS\RestBundle\Controller\Annotations as Rest; // alias pour toutes les annotations use AppBundle\Form\Type\UserType; use AppBundle\Entity\User; class UserController extends Controller { /** * @Rest\View(serializerGroups={"user"}) * @Rest\Get("/users") */ public function getUsersAction(Request $request) { $users = $this->get('doctrine.orm.entity_manager') ->getRepository('AppBundle:User') ->findAll(); /* @var $users User[] */ return $users; } |
User.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | <?php namespace AppBundle\Entity; use Symfony\Component\Security\Core\User\UserInterface; use Doctrine\ORM\Mapping as ORM; use Doctrine\Common\Collections\ArrayCollection; /** * @ORM\Entity() * @ORM\Table(name="users", * uniqueConstraints={@ORM\UniqueConstraint(name="users_email_unique",columns={"email"})} * ) */ class User implements UserInterface { /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue */ protected $id; /** * @ORM\Column(type="string") */ protected $firstname; /** * @ORM\Column(type="string") */ protected $lastname; /** * @ORM\Column(type="string") */ protected $email; /** * @ORM\Column(type="string") */ protected $password; protected $plainPassword; public function getId() { return $this->id; } public function setId($id) { $this->id = $id; } public function getFirstname() { return $this->firstname; } public function setFirstname($firstname) { $this->firstname = $firstname; } public function getLastname() { return $this->lastname; } public function setLastname($lastname) { $this->lastname = $lastname; } public function getEmail() { return $this->email; } public function setEmail($email) { $this->email = $email; } /** * @return mixed */ public function getPassword() { return $this->password; } /** * @param mixed $password */ public function setPassword($password) { $this->password = $password; } /** * @return mixed */ public function getPlainPassword() { return $this->plainPassword; } /** * @param mixed $plainPassword */ public function setPlainPassword($plainPassword) { $this->plainPassword = $plainPassword; } public function getRoles() { return []; } public function getSalt() { return null; } public function getUsername() { return $this->email; } public function eraseCredentials() { // Suppression des données sensibles $this->plainPassword = null; } } |
Entity.User.yml
1 2 3 4 5 6 7 8 9 10 11 | AppBundle\Entity\User: exclusion_policy: none properties: id: groups: ['user', 'preference', 'auth-token'] firstname: groups: ['user', 'preference', 'auth-token'] lastname: groups: ['user', 'preference', 'auth-token'] email: groups: ['user', 'preference', 'auth-token'] |
Merci de me venir en aide
+0
-0