2015-02-19 4 views
0

У меня есть Монго и документ. Я хочу создать putMethodAction, проверить его заполнение (в документе - имя, боде, другое) и обновить его или создать новый документ. Здесь:API, как создать метод Put?

/** 
* Update existing dream from the submitted data or create a new dream at a specific location. 
* 
* @ApiDoc(
* resource = true, 
* description = "Create/Update single dream", 
* parameters={ 
* {"name"="title", "dataType"="string", "required"=true, "description"="Dream name"}, 
* {"name"="description", "dataType"="string", "required"=true, "description"="Description about dream"}, 
* {"name"="phone", "dataType"="integer", "required"=true, "description"="Phone number", "format"="(xxx) xxx xxx xxx"} 
* }, 
* statusCodes = { 
* 201 = "Returned when the Page is created", 
* 204 = "Returned when successful", 
* } 
*) 
* 
* 
* @param Request $request the request object 
* @param int  $id  the page id 
* @return mixed 
*/ 
public function putDreamAction(Request $request, $id) 
{ 
    $data = $request->request->all(); 
    $user = $this->getUser(); 
    $data = $this->get('serializer')->serialize($data, 'json'); 
    $dream = $this->get('serializer')->deserialize($data, 'AppBundle\Document\Dream', 'json'); 

     if (!($dm = $this->get('doctrine.odm.mongodb.document_manager')->getRepository('AppBundle:Dream')->findById($id))) 

     { 
      $dm = $this->get('doctrine.odm.mongodb.document_manager'); 
      $dm->persist($dream); 
      $dm->flush(); 
      $restView = View::create(); 
      $restView->setStatusCode(Codes::HTTP_CREATED); 

     } else { 
      $restView = View::create(); 
      $restView->setStatusCode(Codes::HTTP_NO_CONTENT); 
     } 

     return $restView; 

} 

прочее - и что? как это сделать?

ответ

0

Для точной настройки контроллеров вы можете обратиться к Routing documentation.

blog_show: 
    path:  /blog/{slug} 
    defaults: { _controller: AppBundle:Blog:show } 
    methods: [GET] 

blog_update: 
    path:  /blog/{slug} 
    defaults: { _controller: AppBundle:Blog:update } 
    methods: [PUT] 

blog_delete: 
    path:  /blog/{slug} 
    defaults: { _controller: AppBundle:Blog:delete } 
    methods: [DELETE] 

То же самое можно сделать с помощью аннотаций. Также вы можете передать магический параметр _method, который должен переопределить метод HTTP (см. Те же документы)

Смежные вопросы