Php 从navigation.xml触发的多个操作

Php 从navigation.xml触发的多个操作,php,zend-framework,zend-navigation,Php,Zend Framework,Zend Navigation,导航xml有一个奇怪的问题,下面是一个片段: ... <registration> <label>Registration</label> <module>mine</module> <controller>registration</controller> <pages> <register>

导航xml有一个奇怪的问题,下面是一个片段:

...
<registration>
      <label>Registration</label>
      <module>mine</module>
      <controller>registration</controller>
      <pages>
          <register>
             <label>Register</label>
             <module>mine</module>
             <controller>registration</controller>
             <action>doregistration</action>
           </register>
      </pages>
</registration>
...
每次调用/mine/registration/index操作时,/mine/registration/doregistration操作都会在调试之后触发,这可能需要一两秒钟的时间

/mine/registration/index没有正确显示

这个问题贯穿于整个应用程序。 当我们更改第二页或子页的操作时,将执行此特定操作


这是Zend中已知的问题吗?以前有人遇到过这个问题吗?

也许这个来自同一个应用程序、有着相同问题的示例让事情变得更清楚了:

在navigation.xml中:

如您所见,我们的控制器扩展了自定义控制器动作。 这是一个自定义类,它扩展了Zend_Controller_操作,并添加了一些额外的功能,如日志记录、登录用户的标识等。。。。这个自定义类不能是问题的原因,如果我们不使用is,它仍然会发生

在本例中,如果我们转到default/over/wat操作,应用程序还将调用以下节点default/over/wie。如果我们在XML中切换位置,第二个调用始终是下面的或第一个底层节点

我们不认为这是一个JavaScript调用,因为如果我们检查Charles的流量,只有一个调用被调度

这个例子的视图脚本只包含简单的HTML,没有PHP或JS

希望这能让我们的问题变得更清楚…

啊哈! 我们找到了问题的原因:链接导航帮助器


我们仍然没有真正的解决方案,但这些头部链接并没有那么重要。我们不再使用它。

这是一个很难回答的问题,可能有很多问题。如果它发生在页面成功加载之后,那么我建议查看您的javascript。您没有从视图脚本中调用其他操作吗?我们没有调用该操作,任何地方都没有。事实上,我们对动作的名称进行了项目搜索,除了导航xml中的事件外,几乎什么也没有找到。这就是为什么我们发现xml与此有关。当我们在firefox中不禁用javascript的情况下运行应用程序时,我们会得到相同的行为。
...
<over>
    <label>Over ons</label>
    <module>default</module>
    <controller>over</controller>
    <action>index</action>
    <pages>
        <wat>
            <label>Wat?</label>
            <module>default</module>
            <controller>over</controller>
            <action>wat</action>
        </wat>
        <wie>
            <label>Wie?</label>
            <module>default</module>
            <controller>over</controller>
            <action>wie</action>
        </wie>
        <contact>
            <label>Contact</label>
            <module>default</module>
            <controller>over</controller>
            <action>contact</action>
        </contact>
        <faq>
            <label>Help</label>
            <module>default</module>
            <controller>over</controller>
            <action>faq</action>
        </faq>
    </pages>
</over>
...
class Default_OverController extends Custom_Controller_Action_EhcAction
{

public function indexAction()
{
    return $this->render('index');
}

public function contactAction()
{
    return $this->render('contact');
}

public function wieAction()
{
    return $this->render('wie');
}

public function watAction()
{
    return $this->render('wat');
}

public function faqAction()
{
    return $this->render('faq');
}
}