SensioFrameworkExtraBundle

编辑本页

SensioFrameworkExtraBundle

默认的Symfonyob娱乐下载FrameworkBundle实现了一个基本但健壮且灵活的MVC框架。SensioFrameworkExtraBundle扩展它以添加可爱的约定和注释。它允许更简洁的控制器。

安装

官方的Symfony配方ob娱乐下载可用于此包。自动安装和配置:

1
$ composer需要sensio/framework-extra-bundle

你已经完成了!

配置

当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许可证。