Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 有没有办法用twig检索当前页面所需的角色?_Php_Symfony_Twig - Fatal编程技术网

Php 有没有办法用twig检索当前页面所需的角色?

Php 有没有办法用twig检索当前页面所需的角色?,php,symfony,twig,Php,Symfony,Twig,我有一个块谁显示广告,因为你可能知道广告公司不允许你在私人环境中显示这些,如你需要认证的地方,所以我正在寻找一个聪明的方法,以禁用那些广告在网页上谁需要用户认证 另外,我真的不喜欢在用户在线或不在线的情况下包含两个不同的文件,而且几乎可以肯定有一个内联的解决方案来解决这个问题。。那么,如果当前页面需要一个给定的角色(在我的例子中是role\u USER和更高级别的角色),有没有办法通过twig禁用一个项目呢 <aside> {% if not is_required('ROLE_US

我有一个块谁显示广告,因为你可能知道广告公司不允许你在私人环境中显示这些,如你需要认证的地方,所以我正在寻找一个聪明的方法,以禁用那些广告在网页上谁需要用户认证

另外,我真的不喜欢在用户在线或不在线的情况下包含两个不同的文件,而且几乎可以肯定有一个内联的解决方案来解决这个问题。。那么,如果当前页面需要一个给定的角色(在我的例子中是role\u USER和更高级别的角色),有没有办法通过twig禁用一个项目呢

<aside>
{% if not is_required('ROLE_USER') %} <-------- if the role ROLE_USER is not requiered -->
    <section id="my-ad">
    </section>
{% endif %}
    ...
</aside>

我知道有一个函数名为is_grated,但如果我这样做,如果用户经过身份验证,即使是那些不需要身份验证的用户,所有页面上的广告都将被禁用,这显然不是期望的行为。

不是最佳答案,但如果您使用访问控制来过滤需要身份验证的页面,尝试将正则表达式与页面路径匹配时发生了更改。您可以尝试在细枝模板中使用相同的正则表达式。

这不是最佳答案,但如果您使用access\u控件筛选需要验证的页面,您会尝试将正则表达式与页面路径匹配。您可以尝试在细枝模板中使用相同的正则表达式。

您应该创建sperate动作来呈现您的块。在此操作中,您应该检查用户是否经过身份验证以及其他内容。 如果用户经过身份验证,只需返回新响应,否则返回渲染视图。 然后在你的小树枝模板中

{% render(controller('AcmeBundle:Controller:Action')) %}

你应该创建矛形动作来渲染你的侧块。在此操作中,您应该检查用户是否经过身份验证以及其他内容。 如果用户经过身份验证,只需返回新响应,否则返回渲染视图。 然后在你的小树枝模板中

{% render(controller('AcmeBundle:Controller:Action')) %}

您可以使用请求属性

在路由配置中,添加例如hide_ads属性:

login_page:
    path: /login
    defaults:
        hide_ads: true

然后您可以在模板中与{%if!app.request.attributes.has'hide_ads'%}一起使用它

您可以使用请求属性

在路由配置中,添加例如hide_ads属性:

login_page:
    path: /login
    defaults:
        hide_ads: true
然后您可以在模板中使用它与{%if!app.request.attributes.has'hide_ads%}