SensioFrameworkExtraBundle
编辑本页SensioFrameworkExtraBundle
默认的Symfony欧宝娱乐app下载地址FrameworkBundle
实现了一个基本但健壮且灵活的MVC框架。SensioFrameworkExtraBundle扩展它以添加可爱的约定和注释。它允许更简洁的控制器。
配置
当bundle在Kernel类中注册时,该bundle提供的所有特性默认都是启用的。
缺省配置如下:
- YAML
- XML
- PHP
1 2 3 4 5 6
sensio_framework_extra:路由器:{注释:真正的}#弃用;改用Symfony核心的路由注释欧宝娱乐app下载地址要求:{转换器:真正的,auto_convert:真正的}观点:{注释:真正的}缓存:{注释:真正的}安全:{注释:真正的}
1 2 3 4 5 6 7 8
<!——xmlns:sensio-framework-extra="http://s欧宝娱乐app下载地址ymfony.com/schema/dic/symfony_extra"——><sensio-framework-extra:配置><路由器注释=“真正的”/><请求转换器=“真正的”auto_convert=“真正的”/><视图注释=“真正的”/><缓存注释=“真正的”/><安全注释=“真正的”/>sensio-framework-extra:配置>
1 2 3 4 5 6 7 8
//加载分析器$容器->loadFromExtension (“sensio_framework_extra”,数组(“路由器”= >数组(“注释”= >真正的),“请求”= >数组(“转换器”= >真正的,“auto_convert”= >真正的),“视图”= >数组(“注释”= >真正的),“缓存”= >数组(“注释”= >真正的),“安全”= >数组(“注释”= >真正的)));
可以通过定义一个或多个设置来禁用某些注释和约定假
.
控制器注释
从路由到缓存配置,注释是一种很容易配置控制器的好方法。
即使注释不是PHP的原生特性,它仍然比经典的Symfony配置方法有几个优点:欧宝娱乐app下载地址
- 代码和配置在同一个地方(控制器类);
- 易于学习和使用;
- 写得简洁;
- 使你的控制器变瘦(因为它的唯一职责是从模型中获取数据)。
提示
如果使用视图类,注释是避免为简单和常见用例创建视图类的好方法。
下面的注释是由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)") */公共函数显示(文章$帖子){}}
12 3 4 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
使用Sensio赞助\包\FrameworkExtraBundle\配置\路线;使用Sensio赞助\包\FrameworkExtraBundle\配置\缓存;使用Sensio赞助\包\FrameworkExtraBundle\配置\模板;使用Sensio赞助\包\FrameworkExtraBundle\配置\ParamConverter;使用Sensio赞助\包\FrameworkExtraBundle\配置\方法;使用Sensio赞助\包\FrameworkExtraBundle\配置\IsGranted;使用Sensio赞助\包\FrameworkExtraBundle\配置\安全;#(路线(' /博客'))#(缓存(过期:“明天”))类AnnotController{#(路线(“/”))#(模板)公共函数指数(){$的帖子=……;返回数组(“文章”= >$的帖子);}#(路线(“/ {id}”)]#【方法(“获取”)]#[ParamConverter('post',类:'SensioBlogBundle: post')]#(模板(@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 7
#(路线(“/ {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许可证。