Я хочу поделиться информацией обо всех аннотациях.
@ Get, @Post, @Put, @Delete, @Head, @ Patch - это ярлыки для @Route + @Method,вместо того, чтобы использовать их оба, вы можете просто указать один, например:
/**
* @Get("/hello/{id}")
*
*/
public function helloAction($id)
{
return array();
}
Информация о @ Просмотр находится в документе: 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
Префикс имени можно добавить либо в файл routing.yml, либо в виде аннотации.Это также задокументировано - https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/6-automatic-route-generation_multiple-restful-controllers.md:
Иногда автоматическое именование маршрутов приводит к конфликтам имен маршрутов, поэтому коллекции маршрутов RestBundle предоставляют префикс name_prefix (префикс имени для xml / yml иПараметр @NamePrefix для аннотаций):
#src/Acme/HelloBundle/Resources/config/users_routes.yml comments:
type: rest
resource: "@AcmeHelloBundle\Controller\CommentsController"
name_prefix: api_
При такой конфигурации имя маршрута будет следующим: api_vote_user_comment
@ Prefix isособенно полезно, когда у вас есть родительский ресурс и вам нужно добавить префикс перед дочерним.Пример:
parent:
class UsersController extends Controller
{
public function getUserAction($slug)
{} // "get_user" [GET] /users/{slug}
}
child:
class CommentsController extends Controller
{
public function getCommentAction($slug, $id)
{} // "get_user_comment" [GET]
}
Теперь действие getCommentAction соответствует / users / {slug} / comments / {id} path.
С @Prefix ("some_prefix") сгенерированный путь будет / users / {slug} / some_prefix / comments / {id}
А с помощью аннотации на уровне метода @ NoRoute маршрут не будет сгенерирован.