我想分享有关所有注释的信息。
@Get、@Post、@Put、@Delete、@Head、@Patch是@Route + @Method 的快捷方式,您可以指定一个,而不是同时使用它们,例如:
/**
* @Get("/hello/{id}")
*
*/
public function helloAction($id)
{
return array();
}
有关@View的信息在文档中: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特别有用。例子:
家长:
class UsersController extends Controller
{
public function getUserAction($slug)
{} // "get_user" [GET] /users/{slug}
}
孩子:
class CommentsController extends Controller
{
public function getCommentAction($slug, $id)
{} // "get_user_comment" [GET]
}
现在操作 getCommentAction 对应于/users/{slug}/comments/{id}路径。
使用 @Prefix("some_prefix") 生成的路径将是 /users/{slug}/ some_prefix /comments/{id}
并且通过使用@NoRoute方法级注解,不会生成路由。