你可能不知道Symfony2控制器的5种快捷方式

本文概述

  • redirectToRoute
  • addFlash
  • isGranted
  • denyAccessUnlessGranted
  • isCsrfTokenValid
随着Symfony 2.6的快速发布, Symfony 2.6具有100多个新功能和对著名框架的增强(当然, 本文中将不讨论)。
下面的一组函数只是可以节省你一些键入时间的快捷方式, 请使用不建议使用旧方法(除非… ), 因为它们使用相同的组件, 并且news方法包含在Controller类中。
如果你的控制器从Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller扩展, 则可以使用:
redirectToRoute使用此功能, 你可以根据路由名称返回重定向, 而不必像以前的版本那样先生成URL。
// Symfony 2.6 return $this-> redirectToRoute('homepage'); return $this-> redirectToRoute('product_show', array('id' => 12), 301); // Previous Symfony versions return $this-> redirect($this-> generateUrl('homepage')); return $this-> redirect($this-> generateUrl('product_show', array('id' => 12)), 301);

addFlash快速创建给定类型(错误, 信息等)的即显消息的方法, 首先检查用户会话是否可用:
// Symfony 2.6 $this-> addFlash('info', 'The item was created successfully.'); // Previous Symfony versions $this-> get('session')-> getFlashBag()-> add('info', 'The item was created successfully.');

isGrantedisGranted检查是否根据当前身份验证令牌和可选提供的对象授予用户的给定属性(角色层次结构):
// Symfony 2.6 if ($this-> isGranted('ROLE_ADMIN')) {     // ... } // Previous Symfony versions if ($this-> get('security.context')-> isGranted('ROLE_ADMIN')) {     // ... }

denyAccessUnlessGranted除非针对当前身份验证令牌和可选提供的对象(禁止使用403)授予属性, 否则将引发异常:
// Symfony 2.6 $this-> denyAccessUnlessGranted('ROLE_EDIT', $item, 'You cannot edit this item.'); // Previous Symfony versions if (false === $this-> get('security.context')-> isGranted('ROLE_EDIT', $item)) {     throw $this-> createAccessDeniedException('You cannot edit this item.'); }

isCsrfTokenValid此快捷方式检查给定CSRF令牌的完整性(表单验证和其他会话目的):
// Symfony 2.6 $this-> isCsrfTokenValid('token_id', 'TOKEN'); // Previous Symfony versions use Symfony\Component\Security\Csrf\CsrfToken; $this-> get('security.csrf.token_manager')-> isTokenValid(new CsrfToken('token_id', 'TOKEN'))

【你可能不知道Symfony2控制器的5种快捷方式】主要来源:http://symfony.com/blog/new-in-symfony-2-6-new-shortcut-methods-for-controllers

    推荐阅读