【问题标题】:Doing a post request via url in Slim Framework在 Slim 框架中通过 url 进行发布请求
【发布时间】:2018-09-04 09:13:53
【问题描述】:

我正在尝试以苗条的方式发出postrequest,我的意图是将数据插入到 mysql 数据库中。这是我第一次尝试这样做,如果我不能很好地解释自己,请见谅。

这是我所拥有的:

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;

require 'vendor/autoload.php';
require "classes/Autoloader.php";

$app = new \Slim\App;

$app->post('/', function(Request $request, Response $response) use ($app) {

    $postVars = $request->getParsedBody();
    $id = $request->getAttribute('id');
    $steps = $request->getAttribute('steps');
    $date = $request->getAttribute('date');

    echo $id . $steps . $date;

    require_once "classes/Connection.php";
    $userdata = new Insert($dbh, $id, $steps, $date);
    $userdata->insert();
});
$app->run();

我的意图是获取值,并使用它们插入数据,但我不断收到 Slim 的“找不到页面”错误。这是我正在尝试的网址:http://localhost/wp-api/?id=1&amp;steps=12&amp;date=8787

我做错了什么,或者这是正确的方法吗?

提前致谢!

编辑: 按照 Justal 的回答,我在第 10 行更改了代码; $app-&gt;post('/'... 具体来说。我现在得到Method not allowed. Must be one of: POST

Edit2:我更改了第 12 行 (getQueryParams -> getParsedBody) ,并使用了 Postman,否则 broswer 会执行 getrequest(上一个错误的来源)。不过,它现在将 null 值插入到数据库中。

【问题讨论】:

  • 你的网址应该是localhost/1/12/8787
  • @Justinas wp-api 是它所在的文件夹!

标签: php slim


【解决方案1】:

页面未找到,因为您正在请求获取发布路线。请尝试以下代码。

所有数据都传入 $request 对象。

$app->post('/', function(Request $request, Response $response) {

echo "<pre>";
print_r($request);
exit;    

});

【讨论】:

  • 有效!我不得不将getQueryParams 更改为getParsedBody。不过,它现在将“空”值插入到数据库中。
  • 你能检查 $request 获取发布的表单数据吗?
  • 对不起,我该怎么做?
  • Here's a link。我注意到我在 Postman 中收到一个错误,上面写着“预期命名实体。没有”。我不知道这是什么意思。
  • 好的。您的表单数据未在请求中传递。你能请。解释如何调用这个发布请求。
猜你喜欢
  • 2014-05-02
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 2015-06-18
  • 1970-01-01
  • 2020-06-02
  • 2017-10-15
相关资源
最近更新 更多