【问题标题】:PHP Slim and PUT requestPHP Slim 和 PUT 请求
【发布时间】:2015-05-19 08:58:28
【问题描述】:

我正在做一个 API,但我在使用 PUT 方法时遇到了问题,我已经完成了 GET 和 POST 方法没有问题,但现在我的问题是我无法获得 PUT 参数,我现在太疯狂了。

我的代码:

$app->put(API_ROUTE . '/group/:id', $authenticate($app), function ($id) use ($app) {
 $app->log->addDebug($app->request->getResourceUri(), [$app->request->getMethod()]);
 $em = GetEntityManager();
 $group = $em->getRepository('Api\Entity\Group')->findOneById(mb_convert_encoding($id, 'ISO-8859-1', 'UTF-8'));
 $groupname = $app->request()->params('groupname');
 $description = $app->request()->params('description');
 if($group){
  if(!isset($groupname) || !isset($description)){
    $app->outputData(new HTTP_Status(400, 'Bad request'));
  } else{
   $groupWithSameName = $group = $em->getRepository('Api\Entity\Group')->findOneByGroupname(mb_convert_encoding($groupname, 'ISO-8859-1', 'UTF-8'));
   if($groupWithSameName){
     $app->outputData(new HTTP_Status(400, 'Bad request'));
   }
   else{
    $group->setDescription($description);
    $group->setGroupname($groupname);
    $em->persist($group);
    $em->flush();
    $app->outputData(new HTTP_Status(203, 'Bad request'));
   }
  }
 } else{
    $app->outputData(new HTTP_Status(404, 'Not Found'));
  }
})->conditions(array('id' => '\d+'))
 ->name('put_group');

我的身体请愿书(Mozilla 开发版这么说):

groupname=aaa&description=aaa

请愿完成后我会得到什么

致命错误:调用成员函数 setDescription() on E:\Dev\XAMPP\php\API\app\app.php 中的 null 在 131

第 131 行是 $group->setDescription(...);

我尝试使用

  • $app->request->put('description');

  • $app->request()->put('description');

  • $app->request->params('description');

结果相同。我希望你能帮助我。

【问题讨论】:

  • 您的代码中没有变量$group。要么您根本没有,在这种情况下您将无法使用任何方法,或者您需要显示您在代码中分配它的位置。
  • 请显示完整代码。
  • 已发布完整代码,我正在使用 Doctrine,但我认为这无关紧要。正如我所说,其他方法使用相同的样式,如果我用错了方式,我很抱歉
  • 是的,我读过它,但它对我不起作用。我已经设置了数据类型,例如:(

标签: php http slim


【解决方案1】:

检查,$em->getRepository([...])->findOneByGroupname([...]) 返回的内容。 显然是falsenull

$group->setDescription() 仅在$groupWithSameName(以及因此$group)为空/假时执行。

我可以想象你在 if 语句中忘记了!if(!$groupWithSameName){

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2011-04-25
    相关资源
    最近更新 更多