Symfony2 检查用户是否可以访问 Twig 中的 url



Symfony2中有没有办法检查用户是否可以访问Twig模板中的指定网址?

像这样:

{% if user_has_access( '/some/url/to/access' ) %}
   <a href="{{ path( '/some/url/to/access' ) }}">You can come here</a>
{% endif %}

如果需要,您可以为此创建自定义 Twig 扩展。

有关扩展的详细信息,请参阅文档。

http://symfony.com/doc/current/cookbook/templating/twig_extension.html

狐狸示例:命名空间 AppBundle\Twig;

class AppExtension extends Twig_Extension
{
    public function getFilters()
    {
        return array(
            new Twig_SimpleFilter('user_has_access', array($this, 'userHasAccess')),
        );
    }
    public function userHasAccess($user, $pathForCheck)
    {
        //your logic for check access. can returns true or false
        return true;
    }
    public function getName()
    {
        return 'app_extension';
    }
}

和树枝模板

{% if user_has_access(app.user, 'path/to/check') %}
{% endif %}

此代码可能会出错,因为它只是原型。

就像Paweł Brzoski解释的那样,可以创建自定义的twig函数。

但在Symfony中,正确的方法是使用is_granted('ROLE_...')

最新更新