【问题标题】:ZEND plugin running twice. Why or how to simulate it?ZEND 插件运行两次。为什么或如何模拟它?
【发布时间】:2010-10-12 12:34:01
【问题描述】:

我一直在寻找为什么我的一个 ZEND 插件有时会运行两次(取决于 URL)

请注意,我的插件具有 preDispatch 和 postDispatch 方法,当我调试代码时,它的工作方式如下:

MY_Plugin:preDispatch (echo $_SESSION['DBG'] has value)
MY_Plugin:postDispatch (unset($_SESSION['DBG']))

然后又

MY_Plugin:preDispatch (echo $_SESSION['DBG'] not exist)
MY_Plugin:postDispatch

这是引导代码的一部分

$_SESSION['DBG'] = 'value';
$MYrouter = new MY_Router_MyRouter();
$frontController->setRouter($MYrouter);
$frontController->registerPlugin(new MY_Plugin());

您有什么建议吗?我该如何模拟?

感谢您的任何建议 切尔韦纳克

【问题讨论】:

  • 您是否在控制器中的任何位置使用 _forward 或 _redirect?
  • 我敢打赌这是邪恶的行动帮手:)

标签: zend-framework plugins router


【解决方案1】:

感谢大家提供很多宝贵的提示。

现在看我的故事:)

首先我关闭了显示异常(参数 False)。所以我打开它们以查看异常通知。

$frontController->throwExceptions(true);

比我看到我没有上传控制器和视图文件。上传它们后,ZEND 开始正常工作。

很高兴知道在调试期间将此方向设置为 ON。你可能会节省几个小时。

【讨论】:

    【解决方案2】:

    The dispatcher 循环很可能运行了两次(控制器被分派了两次)。可能的原因:

    • 使用action 查看助手
    • 致电_forward
    • 重定向操作助手
    • 手动拨打dispatch()
    • 调度循环中止并重新启动(例如,重置请求参数)

    另外,看看这个ZF flow diagram(来自php-professionals.com的热链接)

    【讨论】:

      【解决方案3】:

      另一个原因可能是缺少 favicon.ico :-)

      如果 Apache 找不到它,它会触发第二个请求。

      【讨论】:

        猜你喜欢
        • 2011-05-26
        • 2022-01-11
        • 1970-01-01
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2020-07-31
        相关资源
        最近更新 更多