gpt4 book ai didi

php - 如何在 symfony 1.4 中访问 actions.class.php 中的 POST 参数?

转载 作者:行者123 更新时间:2023-12-01 07:34:50 25 4
gpt4 key购买 nike

我对 symfony 还很陌生,所以如果这是一个愚蠢的问题,我很抱歉。我正在使用 symfony 1.4 和 Doctrine。我的同事编写了一个 JavaScript 来从客户端小部件向服务器发送报告:

$j.post(serverpath, {widget_id:widget_id, user_id:user_id, object_id:object_id, action_type:action_type, text_value:stuff_to_report });

我在routing.yml中创建了一条路由来接收此请求:

widget_report:
url: /widget/report/
options: {model: ReportClass, type: object }
param: {module: widget, action: reports}
requirements:
object_id: \d+
user_id: \d+
action_type: \d+
sf_method: [post]

我在 actions.class.php 中创建了一个操作来处​​理请求:

  public function executeReports(sfWebRequest $request) {
foreach($request->getParameterHolder()->getAll() as $param => $val) {
// $param is the query string name, $val is its value
$this->logMessage("executeReports: $param is $val");
}
try {
[...]
$actionHistory->setUserId($request->getParameter('user_id', 1));
$this->logMessage("executeReports success: ");
} catch {
[...]
}
}

我的日志文件报告:

Jul 20 18:51:35 symfony [info] {widgetActions} Call "widgetActions->executeReports()"
Jul 20 18:51:35 symfony [info] {widgetActions} executeReports: module is widget
Jul 20 18:51:35 symfony [info] {widgetActions} executeReports: action is reports
Jul 20 18:51:35 symfony [info] {widgetActions} executeReports success:

我一定是漏掉了一步。当在 URL 中传递变量(当然,并在路由中指定变量)时,我们可以做到这一点,但由于各种原因,我们想使用 POST 来代替。

为什么我的 POST 参数在 actions.class.php 中无法访问?

最佳答案

试试这个代码:

if ($request->isMethod('post')) {
foreach($request->getPostParameters() as $param => $val) {
$this->logMessage("executeReports: $param is $val");
}
} else {
$this->logMessage("executeReports: request method is not POST");
}

如果这没有帮助,请尝试:

$this->logMessage("executeReports: " . var_export($_POST, true));

或者启用 symfony 调试工具栏并查看 POST 变量是否来自浏览器。

如果 $_POST 数组为空,则问题可能出在错误的请求 header 中,要检查这一点,请尝试以下操作:

$fp = fopen('php://input','r');
$this->logMessage("executeReports: " . stream_get_contents($fp));

祝你好运!

编辑:

也许您可以在这里找到答案 $.post not POSTing anything .

例如您应该检查所有 JS 变量是否不为空。

无论哪种情况,我都建议您使用 Firebug 控制台来查看发送到服务器的数据。

关于php - 如何在 symfony 1.4 中访问 actions.class.php 中的 POST 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3295142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com