Assetic Bundles 缓存 Composer 配置 控制台 控制器 调试 部署 Doctrine 电子邮件 事件分发器 表达式 表单 前端 日志 分析器 请求 路由 安全 序列化 服务容器 会话 PSR 7 Symfony 版本 模板 测试 升级 验证 Web 服务器 Web 服务 工作流

发布于 2015-12-06 07:31:54 | 182 次阅读 | 评论: 0 | 来源: 网络整理

会话(Sessions)会在当您读、写,甚至仅仅是检查会话中的数据是否存在的时候自动启动。这意味着如果您需要避免为某些用户创建会话 cookie 是很难的:您必须完全避免访问会话。

例如,在这种情况下的一个常见的问题是检查存储在会话中的 flash 消息。以下代码将保证会话始终是开始的(started)。

{% for flashMessage in app.session.flashbag.get('notice') %}
    <div class="flash-notice">
        {{ flashMessage }}
    </div>
{% endfor %}

即使用户没有登录,即使您没有创建任何 flash 信息,只要调用 flashbagget()(或是 has())方法就可以启动一个会话。这可能会损伤您的应用程序性能,因为所有的用户都会收到一个会话 cookie。为了避免这一行为,在尝试访问 flash 消息之前添加一个 check 。

{% if app.request.hasPreviousSession %}
    {% for flashMessage in app.session.flashbag.get('notice') %}
        <div class="flash-notice">
            {{ flashMessage }}
        </div>
    {% endfor %}
{% endif %}
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务