本文概述
- redirectToRoute
- addFlash
- isGranted
- denyAccessUnlessGranted
- isCsrfTokenValid
下面的一组函数只是可以节省你一些键入时间的快捷方式, 请使用不建议使用旧方法(除非… ), 因为它们使用相同的组件, 并且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
推荐阅读
- 单击注册会导致Android应用程序崩溃
- 如何在Doctrine 2(独立或symfony 2和3)中轻松选择随机行
- 如何使用C#在WinForms应用程序中实现Sciter(轻量级HTML和CSS UI引擎)
- 如何在服务器的生产环境中轻松部署symfony2项目
- Swiftmailer(轻松轻松地从php发送邮件)
- 如何使用ILSpy反编译.NET Framework程序集(读取其源代码)
- 如何在WinForms中使用带有C#的SSH.NET(同步和异步)访问SFTP服务器
- 如何在PHP中使用Imagick区分(比较)2个图像
- 如何在WinForms中的CefSharp控件上向本机上下文菜单添加新项