Php 从navigation.xml触发的多个操作
导航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>
...
<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');
}
}