2016-03-29 9 views
0

ich einen Rest api zu entwickeln versuche, ich ein Problem mit Routen Anmerkungen haben, denn wird es mein Code funktioniert für genesen, ist alsPOST Route Anmerkung Symfony2

/** 
* @QueryParam(name="offset", requirements="\d+", nullable=true, description="Offset from which to start listing pages.") 
* @QueryParam(name="limit", requirements="\d+", nullable=true, default="20", description="How many pages to return.") 
* 
* @View() 
* 
* @param Request    $request  the request object 
* @param ParamFetcherInterface $paramFetcher param fetcher service 
* GET Route annotation. 
* @Get("https://stackoverflow.com/users/") 
* @return array 
*/ 
public function getUsersAction(Request $request, ParamFetcherInterface $paramFetcher) 
{ 
    $offset = $paramFetcher->get('offset'); 
    $offset = null == $offset ? 0 : $offset; 
    $limit = $paramFetcher->get('limit'); 

    return $this->container->get('user.handler')->all($limit, $offset); 
} 

für Post folgt Ich weiß nicht, wie es zu tun, ist mein Code wie folgt, ich will attribues der Benutzer in der uRL an, wie man das plz tun

  /** 
* @View(template = "UserBundle:User:register.html.twig", statusCode = Codes::HTTP_BAD_REQUEST, templateVar = "form") 
* 
* @param Request $request the request object 
* POST Route annotation. 
* @Post("https://stackoverflow.com/users/") 
* @return FormTypeInterface|View 
*/ 
public function postUserAction(Request $request) 
{ 
    try { 
     $newUser = $this->get('user.handler')->post($request); 

     $routeOptions = array(
       'id' => $newUser->getId(), 
       '_format' => $request->get('_format') 
     ); 

     return $this->routeRedirectView('get_user', $routeOptions, Codes::HTTP_CREATED); 
    } catch (InvalidFormException $exception) { 

     return $exception->getForm(); 
    } 
} 
+0

Scheint vergessen zu erwähnen, dass Sie den FOSRestBundle verwenden. Ist das korrekt? – Andras

+0

ja ich benutze fosRestBundle – Ndb

Antwort

0

Sie können diese Parameter aus der Anfrage erhalten:

/** 
* @View(template = "UserBundle:User:register.html.twig", statusCode = Codes::HTTP_BAD_REQUEST, templateVar = "form") 
* 
* @param Request $request the request object 
* POST Route annotation. 
* @Route("/user/{name}/{email}") 
* @Method("POST") 
* @return FormTypeInterface|View 
*/ 
public function postUserAction(Request $request, $name, $email) 
{ 
    try { 

     $newUser = $this->get('user.handler')->post($request);   

     $routeOptions = array(
       'id' => $newUser->getId(), 
       '_format' => $request->get('_format') 
     ); 

     return $this->routeRedirectView('get_user', $routeOptions, Codes::HTTP_CREATED); 
    } catch (InvalidFormException $exception) { 

     return $exception->getForm(); 
    } 
} 
+0

wie kann ich das bitte tun? – Ndb

+0

in meinem Fall, ich möchte in Urm Attribute eines Benutzers hinzufügen, um es zu buchen .. wie Benutzer/fabian/[email protected]/.... – Ndb

+0

Ich habe die Antwort aktualisiert, können Sie Routing-Platzhalter hinzufügen. Lesen Sie mehr in der Dokumentation http://symfony.com/doc/current/book/routing.html#routing-with-placeholders. Alse, Sie können Anforderungen und Standardwerte hinzufügen: http://symfony.com/doc/current/book/routing.html#adding-http-method-requirements –

Verwandte Themen