2011-10-24 30 views
9

Herhangi biri denetleyicide eklenmiş, al, yaz, ek açıklamaları sil (https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Controller/Annotations/).symfony2 FOSRestBundle ek açıklamaları

Bunu böyle kullanmaya çalışıyorum, ancak yine de yöntemler alınıyor. FOSRestBundle

/** 
* @Route("/get/{id}", defaults={"_format" = "json"}) 
* @Post 
*/ 
public function getObject($id) {  
    $object = $this->getService()->findById($id); 
    return $object; 
} 

cevap

13

yoluyla gönderilecek.

@Get, @Post, @Put, @Delete, @Head, @Patch yerine, sadece bir tane belirtebilirsiniz ikisini de kullanarak, @Route + @Method için kısayollarıdır örn:

/** 
    * @Get("/hello/{id}") 
    * 
    */ 
    public function helloAction($id) 
    { 
     return array(); 
    } 

Bilgi hakkında @View doc içinde: https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/3-listener-support.md

@View //Guess template name 
@View("AcmeHelloBundle::layout.html.twig") //Load Resources/views/layout.html.twig 
@View("AcmeHelloBundle::layout.html.twig", templateVar="test") // if returned data doesn't 
    // have a key (e.g. return array("string", 5) instead of default variable 'data', 
    // it's placed inside 'test' variable inside template. 
@View(statusCode=204) // set HTTP header's status code 

Adı öneki routing.yml dosyaya veya bir ek açıklama olarak ya eklenebilir. Aynı zamanda belgelenmiştir - https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/6-automatic-route-generation_multiple-restful-controllers.md:

Bazen yolları otomatik adlandırma yüzden RestBundle rota koleksiyonları parametresi (ek açıklamaları için xml/YML ve @NamePrefix için ad-öneki) bir name_prefix sağlar, rota isimleri çarpışmaların yol açacaktır :

Bu yapılandırma ile
#src/Acme/HelloBundle/Resources/config/users_routes.yml comments: 
    type:   rest 
    resource:  "@AcmeHelloBundle\Controller\CommentsController" 
    name_prefix: api_ 

, rota adı olacaktı: api_vote_user_comment

@Prefix özellikle ebeveyn kaynağınız olduğunda ve önekini birinciden önce eklemeniz gerektiğinde kullanışlıdır. Örnek:

veli:

class UsersController extends Controller 
{ 
    public function getUserAction($slug) 
    {} // "get_user" [GET] /users/{slug} 
} 

çocuk:

class CommentsController extends Controller 
{ 
    public function getCommentAction($slug, $id) 
    {} // "get_user_comment" [GET] 
} 

Şimdi eylem getCommentAction /kullanıcılar/{sümüklü böcek} karşılık gelir/yorum/{id} yolu.

@Prefix ile

("some_prefix") oluşturulan yol olacak/kullanıcılar/{sümüklüböcek}/some_prefix/yorum/{id}

Ve @NoRoute yöntem düzeyinde ek açıklama kullanarak

, rota oluşturulmayacak.

2

bu Ek Açıklamaların amacı (yani bir get eşdeğer olduğundan) Sen rotada kimliği koymamaliydiniz nedir. Bunun yerine id param zorlamak için bu yapmalıdır tüm açıklamalar hakkında bilgi paylaşmak istiyorum $ _POST

/** 
* @Route("/get", defaults={"_format" = "json"}) 
* @Post 
*/ 
public function getObject() { 
    $id = $this->Request::createFromGlobals()->request->get('id'); 
    $object = $this->getService()->findById($id); 
    return $object; 
}