Bonjour
J’ai suivi le tuto "Créez une API REST avec Symfony 3". J’ai pas mal galéré niveau configuration mais j’avançais bien. Sauf que là je dois faire quelque chose qui n’est pas explicitement décrit et… Bah je n’y arrive pas :’D Pour faire simple je dois ajouter des produits qui peuvent avoir une ou plusieurs catégories (et non ajouter des prix en même temps).
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 | <?php namespace AppBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use FOS\RestBundle\Controller\Annotations as Rest; use AppBundle\Form\Type\ProduitType; use AppBundle\Entity\Produit; class ProduitController extends Controller { public function getProduitsAction(Request $request){ $produits = $this->get('doctrine.orm.entity_manager') ->getRepository('AppBundle:Produit') ->findAll(); /* @var $produits Produit[] */ $formatted = []; foreach ($produits as $produit) { $formatted[] = [ 'name' => $produit->getName(), ]; } return new JsonResponse($formatted); } public function postProduitsAction(Request $request){ $produit = new Produit(); $form = $this->createForm(ProduitType::class, $produit); $form->submit($request->request->all()); // var_dump($form->getErrors() ); // var_dump($form->isValid()); // die(); if ($form->isValid()) { $em = $this->get('doctrine.orm.entity_manager'); try{ $em->persist($produit); $em->flush(); $formatted[] = [ 'id' => $produit->getId(), 'name' => $produit->getName(), 'prix' => $produit->getPrix(), 'stock' => $produit->getStock() ]; } catch (Exception $e){ $formatted[] = [ 'erreur' => 'Err004 : '.$e->getMessage() ]; } } else { $formatted[] = [ 'erreur' => "Err003 : le Json est invalide." ]; } return new JsonResponse($formatted); } } |
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 | <?php namespace AppBundle\Form\Type; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class ProduitType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder->add('name'); $builder->add('prix'); $builder->add('monnaie'); $builder->add('stock'); $builder->add('categories', CollectionType::class, [ 'entry_type' => CategorieType::class, 'error_bubbling' => false, ]); } public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => 'AppBundle\Entity\Produit', 'csrf_protection' => false ]); } } |
Et là il me sort que le json est invalide (l’erreur définie plus haut). je précise que lorsque je ne mets pas le code pour la catégorie il fonctionne très bien.
Quelqu’un aurait une idée ? ._.
Merci
+0
-0