正如我在另一篇文章中所说,我正在尝试使开源 Intranet 适应我的需求。我正在尝试做的一件事是让 Intranet 在与默认文件夹不同的文件夹中查找视图模板($customViewPath
并且$defaultViewPath
,从现在开始)。
我对 Zend Framework 完全没有经验,而且我很难弄清楚一些事情,但是我认为我已经走到了死胡同。
我正在尝试通过$view->addScriptPath($customViewPath)
在引导程序中使用为视图模板添加我的自定义路径。实际上,它可以工作,但前提是视图文件不存在于$defaultViewPath
. 我想要的恰恰相反:如果自定义文件不存在$customViewPath
,则从$defaultViewPath
.
如果我打印getScriptPaths()
,我会得到array($defaultViewPath, $customViewPath)
。也就是说,在脚本生命周期的某个地方,$defaultViewPath
被添加到视图路径列表中,其优先级高于我的自定义路径。我找不到发生这种情况的地方,并且不认为它存在于每个模块控制器中。
另外,我知道我必须将我的一段代码移动$view->addScriptPath($customViewPath)
到引导程序之外的某个位置,因为自定义路径与模块相关,但我无法从引导程序访问模块名称,因为尚未启动请求。我想我可以改变它,但我想尽可能地保持原来的行为。
addScriptPath()
我已经阅读了关于,的所有信息setScriptPath()
,getScriptPaths()
我可以理解,但仍然不知道如何将其应用于我的案例。任何想法都会受到欢迎。
我知道我应该提供有关该应用程序的更多信息,但我缺乏经验使我不知道还有什么需要。请随时提出任何可以使我的问题更清楚的问题。
该应用程序的代码可以从其网站下载。我只是不在这里发布链接,以免它看起来像垃圾邮件。
编辑:
我很抱歉坚持这个话题,但我对 ZF 了解得越多,我对这个问题就越感到困惑。
我已经跟踪了视图路径堆栈,并且在我的插件 preDispatch() 和操作 preDispatch() 函数之间的某个位置,默认路径(我试图覆盖的路径)被推入堆栈。
我唯一能想到的是其他一些插件正在我之后执行。我试图给我的插件一个非常高的执行订单号,但仍然没有。
如果我说我在这个问题上花了至少两个星期,我并不夸张(虽然我不能在工作上花更多的时间,我在家里花了很多时间),我已经阅读了所有我能读到的东西把我的手放在调度周期上,但我不知道接下来要尝试什么。
以防万一我可能是对的,有没有办法从一个动作中列出正在执行的插件及其顺序?