【问题标题】:When to initialize the layout & theme specific details in Zend Framework?何时在 Zend Framework 中初始化布局和主题特定细节?
【发布时间】:2010-11-15 00:00:30
【问题描述】:

我是 ZF 的新手,所以我的问题可能看起来很新,如果已经回答,我提前道歉。

ZF执行一个完整过程的顺序是
1. 路由启动
2.工艺路线
3. 路由关闭
4. dispatchLoopStartup
5. 预调度
6.调度过程开始
7.控制器的init方法
8.控制器助手的preDispatch
9. 动作的 preDispatch
10. 行动
11. action的postDispatch
12. 控制器助手的 postDispatch
13. postDispatch
14. dispatchLoopShutdown

现在我们可以在多个地方发起 + 配置布局和主题详细信息。我们可以在第 5、7、8 和 9 阶段进行。什么阶段最适合这个目的。

该应用程序将使用 AJAX,因此如果我在第 5 阶段加载布局详细信息,那么稍后我将有很多机会删除布局并仅发送 XML 响应。

【问题讨论】:

    标签: ajax zend-framework layout


    【解决方案1】:

    通常最好在引导期间使用application resource plugin 配置您的布局。

    要在响应 XHR 时禁用布局,请使用 AjaxContext 操作助手。

    编辑:你什么时候知道你将使用哪个主题?如果时间足够早并且所需参数可用,您可以使用引导程序 _init* 方法或自定义布局应用程序资源插件来实现。

    否则,我将实现并注册一个控制器操作助手,在其preDispatch 覆盖中设置主题。使用第二种方法还可以让您访问请求,因此您可以根据请求方法做出决定是否打扰布局。事实上,这可能是自定义覆盖 AjaxContext 帮助程序本身的一个很好的候选者。

    【讨论】:

    • 哦,比我早 7 秒,更好的答案 :) +1
    • 应用程序将使用不同的主题,因此引导进程不知道要加载/启动哪个主题。虽然会有一个默认主题,但实际加载的主题将从用户个人设置下的数据库中检索。第二,如果我们启动它引导的布局,然后取消它,这意味着我们最初运行了一个代码,后来我们不需要那些会降低性能的代码。
    • @Bryan 我已经更新了我的答案,为您提供了更多想法。此外,虽然确定主题会产生更多工作,但配置布局的开销很小。
    • 谢谢菲尔。我正在使用一个插件,该插件使用 dispatchLoopStartup 来检查用户是否可以访问特定路由。一旦确认他有访问权限,我会加载包含主题相关详细信息的用户数据。检查访问后加载用户数据的原因是为了避免在用户验证失败时额外调用数据库。
    【解决方案2】:

    您可以在引导期间的第 1 步之前启动和配置布局 - 这是最好的地方 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多