个性化阅读
专注于IT技术分析

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

本文概述

随着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.');

isGranted

isGranted检查是否根据当前身份验证令牌和可选提供的对象授予用户的给定属性(角色层次结构):

// 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'))

主要来源:http://symfony.com/blog/new-in-symfony-2-6-new-shortcut-methods-for-controllers

赞(0)
未经允许不得转载:srcmini » 你可能不知道Symfony2控制器的5种快捷方式

评论 抢沙发

评论前必须登录!