SensioFrameworkExtraBundle
编辑本页SensioFrameworkExtraBundle
默认的Symfonyob娱乐下载FrameworkBundle
实现了一个基本但健壮且灵活的MVC框架。SensioFrameworkExtraBundle扩展它以添加可爱的约定和注释。它允许更简洁的控制器。
配置
当bundle在Kernel类中注册时,该bundle提供的所有特性默认都是启用的。
缺省配置如下:
- YAML
- XML
- PHP
1 2 3 4 5 6
sensio_framework_extra:路由器:{注释:真正的}#弃用;改用Symfony核心的路由注释ob娱乐下载要求:{转换器:真正的,auto_convert:真正的}观点:{注释:真正的}缓存:{注释:真正的}安全:{注释:真正的}
可以通过定义一个或多个设置来禁用某些注释和约定假
.
控制器注释
从路由到缓存配置,注释是一种很容易配置控制器的好方法。
即使注释不是PHP的原生特性,它仍然比经典的Symfony配置方法有几个优点:ob娱乐下载
- 代码和配置在同一个地方(控制器类);
- 易于学习和使用;
- 写得简洁;
- 使你的控制器变瘦(因为它的唯一职责是从模型中获取数据)。
提示
如果使用视图类,注释是避免为简单和常见用例创建视图类的好方法。
下面的注释是由bundle定义的:
这个示例显示了所有可用的注释(在这里和其他所有示例中,都显示了普通的旧注释和PHP 8属性):
- 注释
- 属性
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
使用Sensio赞助\包\FrameworkExtraBundle\配置\路线;使用Sensio赞助\包\FrameworkExtraBundle\配置\缓存;使用Sensio赞助\包\FrameworkExtraBundle\配置\模板;使用Sensio赞助\包\FrameworkExtraBundle\配置\ParamConverter;使用Sensio赞助\包\FrameworkExtraBundle\配置\方法;使用Sensio赞助\包\FrameworkExtraBundle\配置\IsGranted;使用Sensio赞助\包\FrameworkExtraBundle\配置\安全;/ * * *@Route(“/博客”)*@Cache(到期= "明天")* /类AnnotController{/ * * *@Route(“/”)*@Template* /公共函数指数(){$的帖子=……;返回数组(“文章”= >$的帖子);}/ * * *@Route(" / {id} ") *@Method(“获取”)*@ParamConverter("post", class="SensioBlogBundle: post") *@Template(“@SensioBlog/ annot / show.html。Twig ", vars={"post"}) *@Cache(smaxage="15", lastmodified=" Post . getupdatedat ()", etag="'Post' ~ Post . getid () ~ Post . getupdatedat ()") *@IsGranted(“ROLE_SPECIAL_USER”)*@Security(" is_granting ('ROLE_ADMIN') and is_granting ('POST_SHOW', post)") */公共函数显示(文章$帖子){}}
随着showAction
方法遵循一些约定,您可以省略一些注释:
- 注释
- 属性
1 2 3 4 5 6 7 8 9
/ * * *@Route(" / {id} ") *@Cache(smaxage="15", lastModified=" Post . getupdatedat ()", Etag="'Post' ~ Post . getid () ~ Post . getupdatedat ()") *@IsGranted(“ROLE_SPECIAL_USER”)*@Security(" is_granting ('ROLE_ADMIN') and is_granting ('POST_SHOW', post)") */公共函数显示(文章$帖子){}
这些路由需要像其他路由资源一样被引入为活动的,例如:
1 2 3 4 5 6
#配置/线路/ annotations.yaml#从控制器目录导入路由annot:资源:“@AnnotRoutingBundle /控制器”类型:注释
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。