【问题标题】:var_dump($_POST); is empty but not var_dump($_POST); die;var_dump($_POST);为空但不是 var_dump($_POST);死;
【发布时间】:2011-11-24 18:13:12
【问题描述】:

我在这个问题上找到了一些类似的主题,但对我的情况没有:

我通过表单发送一些帖子数据,但 $_POST 数组始终为空(非空)。但是当我添加一个“死”时;或“退出”;在 var_dump($_POST) 之后;我可以看到所有发送的数据。

可能需要知道,这是在“onPreDispatch”上调用的(商店软件)插件中。

感谢您的帮助

【问题讨论】:

  • 您是通过 POST 还是 GET 调用页面?尝试使用 $_REQUEST。
  • 我不重定向,但我操纵请求参数,在插件例程完成后调用另一个控制器和操作。 shopware 是建立在 zend 之上的,所以这是我在处理完例程后调用另一个控制器的方式: $request->setParam('sTarget', 'checkout'); $request->setControllerName('account'); $request->setActionName('savePayment'); $request->setActionName('savePayment')->setDispatched(false);我注意到,如果我取出这段代码,我会得到我的帖子数据,但是我没有“连接”到最初必须调用的下一个动作。
  • 还有其他方法可以在zend中调用另一个控制器的特定动作吗?

标签: php post


【解决方案1】:

问题是重定向,虽然它是在我读取请求中的参数之后重置帖子。

我不知道,商店软件会将所需的数据 (paymentID) 保存在数据库中。所以我将我的插件切换回“onPostDispatch”(这样它将在所有其他操作之后被调用,其中一个将数据保存在数据库中)。现在我可以读取 db 并获得最初在 post 数组中的相同数据。

我试图成为“第一个”阅读该帖子的人,但无法解决。现在我是最后一个阅读它的人,它运行良好。

感谢所有答案!这里的线索是“重定向”。

【讨论】:

    【解决方案2】:

    您的(商店软件)插件可能使用了输出缓冲。这意味着它将收集所有的生态并打印,直到您调用 ob_flush() 来打印所有缓冲区。

    die() 函数,除其他外,在调用时也会刷新缓冲区。 因此,如果您在 echo 之后执行 ob_flush(),您应该会得到所需的结果。

    【讨论】:

    • 这是一个非常非常长的镜头。我希望数组“为空(非空)”意味着print_r($_POST) 导致Array (),在这种情况下它不是输出缓冲。
    • 这是正确的 zneak,如果我 var_dump 帖子,我会得到 "array(0) { }" 它不是关于打印一些数据,我只需要帖子的内容,我只能在与 die 或 exit 组合。
    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2015-07-29
    相关资源
    最近更新 更多