Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github
No Symfony 2.4, um poderoso componente ExpressionLanguage foi adicionado ao Symfony. Isso nos permite adicionar lógica altamente personalizada dentro da configuração.
O Framework Symfony utiliza expressões prontas para uso nas seguintes formas:
Para mais informações sobre como criar e trabalhar com expressões, consulte /components/expression_language/syntax.
Adicionalmente a um papel como ROLE_ADMIN, o método isGranted também aceita um objeto Symfony\Component\ExpressionLanguage\Expression:
use Symfony\Component\ExpressionLanguage\Expression;
// ...
public function indexAction()
{
if (!$this->get('security.authorization_checker')->isGranted(new Expression(
'"ROLE_ADMIN" in roles or (user and user.isSuperAdmin())'
))) {
throw $this->createAccessDeniedException();
}
// ...
}
Nesse exemplo, se o usuário atual possui ROLE_ADMIN ou se o método isSuperAdmin() do objeto do usuário atual retornar True, então o acesso será concedido (nota: o seu objeto User pode não ter um método isSuperAdmin, esse método foi inventado para esse exemplo).
Isso usa uma expressão e para aprender mais sobre a sintaxe da linguagem de expressão , consulte /components/expression_language/syntax.
Dentro da expressão, você tem acesso a uma série de variáveis:
Além disso, você tem acesso a uma série de funções dentro da expressão: