2016-04-11 10 views
1

bitte ich brauche deine Hilfe, ich versuche, ein Bild mit Nelmio-Bundle aber einzufügen es gibt mir diesen Fehler Parameter-Tags Wert '' verletzt eine Einschränkung (Erwartetes Argument vom Typ \ "Array oder Travers \", \ "string \" genannt)“Parameter Tags Wert '' verletzt eine Einschränkung (Erwartete Argument vom Typ "Array oder Traversable ", "String " gegeben) "

mein Controller wie folgt

 /** 
* @ApiDoc(description="Uploads photo with tags.") 
* 
* @Rest\FileParam(name="image", image=true, description="Image to upload.") 
* @Rest\RequestParam(name="tags", requirements=".+", nullable=false, map=true, description="Tags that associates photo.") 
* @Rest\View() 
*/ 
public function postPhotoAction(ParamFetcher $paramFetcher, array $tags) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $photo = new Photo(); 
    $form = $this->createForm(new PhotoType, $photo); 

    if ($tags) { 
     $tags = $em->getRepository('TestTaskTagsBundle:Tag')->findOrCreateByTitles($tags); 
    } 

    $form->submit($paramFetcher->all()); 

    if (!$form->isValid()) { 
     return $form->getErrors(); 
    } 

    foreach ($tags as $tag) { 
     $photo->addTag($tag); 
    } 

    $em->persist($photo); 
    $em->flush(); 

    return array('photo' => $photo); 
} 

wie man das bitte lösen

+0

sicher, dass $ tags wirklich ein Array ist? Wie sieht Ihre findOrCreateByTitles-Funktion aus? – LBA

+0

Tags ist ein Array in der Entity-Klasse/** * @ORM \ OneToMany (targetEntity = "PhotoTag", mappedBy = "Foto", cascade = {"persist"}, orphanRemoval = true) * * @var ArrayCollection | PhotoTag [] */ private $ photoTags; – Nada

+0

findOrCreateByTitles Funktion ist eine andere Sache – Nada

Antwort

0

Der Fehler kommt von Ihren eigenen Anforderungen, Sie benötigen nullable=false und map=true, aber Sie übergeben keinen Wert (d. H. value "" violated a constraint).

Stellen Sie die nullable Attribut auf false in Ihrer RequestParam:

* @Rest\RequestParam(name="tags", requirements=".+", nullable=true, map=true, description="Tags that associates photo.") 

Oder Werte zuweisen Ihre tags Parameter.

PS: Das Problem ist über FOSRestBundle, nicht Nelmio/Api-Doc-Bundle, die hier ist nur für Ihr Dokument zu dokumentieren.

EDIT

ein Array in nelmio Sandbox einzufügen, verwenden Sie diese als Schlüsselwert:

Key: tags[] , Value: 'tag1' 

Und das Sie für jeden Tag tun wollen passieren (ein neues Schlüssel-Wert-Paar) .

+0

, wie Sie ein Array zuweisen? das ist mein Problem – Nada

+0

Ich habe meine Antwort bearbeitet. – chalasr

+0

ich tat das, immer noch der gleiche Fehler – Nada