Symfony annotations语法

1、@Route

该注释定义 网站 / 路径和indexAction 的映射,当用户访问 / 路径时,执行indexAction方法

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
class PostController extends Controller{
    /**     
    * @Route("/")     
    */
    public function indexAction()
    {
        // ...
    }
}


{id} 是参数,requirements定义了id只能为数字,defaults定义了一个默认变量foo和值bar

/** 
* @Route("/{id}", requirements={"id" = "\d+"}, defaults={"foo" = "bar"}) 
*/
public function showAction($id)
{
}


访问 / 路径 和 /{id} 均执行 showAction方法,访问 / 路径时,附带 id=1 传值给 showAction方法

/** 
* @Route("/", defaults={"id" = 1}) 
* @Route("/{id}")
*/
public function showAction($id)
{
}


定义 路径 和名称,这样定义后,$this->generateUrl('blog_home')  ,就会构造一个访问homeAction方法的URL

/** 
* @Route("/", name="blog_home") 
*/
public function homeAction(){
}


第一条注释 @Route("/blog")是设置路径前缀,此定义后

访问showAction方法的路径,实际是   /blog/{id}

/** 
* @Route("/blog") 
*/
class PostController extends Controller{
    /**
    * @Route("/{id}")
    */
    public function showAction($id)
    {
    }
 }


@Method 设置 支持的请求类型

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
/** 
* @Route("/blog") 
*/
class PostController extends Controller{
    /**     
    * @Route("/edit/{id}")     
    * @Method({"GET", "POST"})     
    */
    public function editAction($id)
    {
    }
}


把控制器定义成服务,这样你就能在容器中使用它了

/** 
* @Route(service="my_post_controller_service") 
*/
class PostController extends Controller{
    // ...
}


你可能感兴趣的:(Symfony annotations语法)