Php Zend Framework addScriptPath和Precurio Intranet

Php Zend Framework addScriptPath和Precurio Intranet,php,zend-framework,Php,Zend Framework,正如我在另一篇文章中所说的,我正在尝试使一个开源的内部网适应我的需要。我尝试做的一件事是让intranet在不同于默认文件夹的文件夹中查找视图模板($customViewPath和$defaultViewPath,从现在开始) 我对Zend框架完全没有经验,我很难弄清楚一些事情,但是有了这个,我想我已经走到了死胡同 我试图通过在引导中使用$view->addScriptPath($customViewPath)为视图模板添加自定义路径。实际上,它可以工作,但仅当视图文件不存在于$defaultV

正如我在另一篇文章中所说的,我正在尝试使一个开源的内部网适应我的需要。我尝试做的一件事是让intranet在不同于默认文件夹的文件夹中查找视图模板(
$customViewPath
$defaultViewPath
,从现在开始)

我对Zend框架完全没有经验,我很难弄清楚一些事情,但是有了这个,我想我已经走到了死胡同

我试图通过在引导中使用
$view->addScriptPath($customViewPath)
为视图模板添加自定义路径。实际上,它可以工作,但仅当视图文件不存在于
$defaultViewPath
中时。我想要的恰恰相反:如果自定义文件在
$customViewPath
中不存在,请从
$defaultViewPath
加载默认视图

如果我打印
getscriptpath()
,我会得到
数组($defaultViewPath,$customViewPath)
。也就是说,在脚本生命周期的某个地方,
$defaultViewPath
被添加到视图路径列表中,优先级高于我的自定义路径。我找不到发生这种情况的地方,也不认为每个模块控制器都存在这种情况

另外,我知道我必须将我的一段代码
$view->addScriptPath($customViewPath)
移到引导程序之外的某个地方,因为自定义路径与模块相关,但我无法从引导程序访问模块名,因为请求尚未启动。我想我可以改变这一点,但我希望尽可能保持原来的行为

我已经阅读了关于
addScriptPath()
setScriptPath()
getscriptpath()
的所有信息,我可以理解,但仍然不知道如何将其应用到我的案例中。任何想法都欢迎

我知道我应该提供更多关于申请的信息,但我缺乏经验,不知道还有什么是必要的。请随时提出任何可以让我的问题更清楚的要求

应用程序的代码可以从其网站下载。我只是不张贴在这里的链接,使它看起来不像垃圾邮件

编辑:

很抱歉,我坚持这个话题,但我对采埃孚了解得越多,我对这个问题就越感到困惑

我已经跟踪了视图路径的堆栈,在我的插件preDispatch()和action preDispatch()函数之间的某个地方,默认路径(我试图覆盖的路径)被推到堆栈中

我能想到的唯一一件事就是在我的插件之后正在执行其他插件。我试着给我的插件一个非常高的执行顺序号,但仍然没有

如果我说我已经在这个问题上花了至少两周的时间(虽然我不能在工作上花更多的时间,我在家里花了很多时间),我并不夸张,我已经阅读了所有我能接触到的关于派遣周期的信息,但我不知道下一步该做什么


为了以防万一,我可能是对的,有没有办法从一个动作中列出正在执行的插件及其顺序?

基本上,你可以颠倒路径堆栈的顺序

尝试:


这应该可以完成您想要的大部分功能。

我确实按照您所说的做了,但在那之后的某个地方(我找不到位置),应用程序添加了自己的脚本路径(在示例中我称之为$default),因此,我的设置保留在默认设置下。您可以检查application.ini以查找可能覆盖引导条目的任何视图资源。还要检查任何插件中是否有改变路径的代码。如果你想发布代码(不是站点)的链接引导代码在这里(你可以在那里看到整个代码)。视图的路径在$this->layout()->content期间更改(但它仅对某些模块更改,对其他模块不更改!!)。不再调用SetScriptPath或AddScriptPath。我知道这看起来很简单,但我是个笨蛋,我不知道该怎么办。谢谢你的关注。你有没有试过这个论坛?在查看代码之后,您的要求可能并不简单或明显。这款软件的制造商已经明显偏离了ZF的默认设置,有些变化并不明显。是的,我已经尝试过了,但还没有成功。不管怎么说,知道答案不是那么明显会鼓励我,这让我觉得,除了我对采埃孚缺乏了解之外,还有其他原因让我花了这么长时间,谢谢!。
protected function _initView()
    {
        //Initialize view
        $view = new Zend_View();

        //reset script path stack with custom view path
        $view->setScriptPath($customViewPath);
        //add default path back to path stack
        $view->addScriptPath($defaultViewPath);

        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
                'ViewRenderer');
        $viewRenderer->setView($view);
        //Return it, so that it can be stored by the bootstrap
        return $view;
    }