2015-05-19 101 views
2

我正在做一個API,我有PUT方法的麻煩,我做了GET和POST方法沒有問題,但現在我的問題是,我不能得到PUT PARAMS,我是現在如此瘋狂。PHP Slim和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()E:\開發\ XAMPP \ PHP \ API \程序\ app.php上線

131線爲$組 - > setDescription(...);

我試圖用

  • $ APP->請求 - >把( '說明');

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

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

具有相同的結果。我希望你能幫助我。

+0

'$ group'是什麼? – vps

+1

您的代碼中沒有變量'$ group'。要麼你根本沒有一個,在這種情況下你將無法使用任何方法,或者你需要顯示你的代碼分配給它的地方。 –

+0

請顯示完整的代碼。 – vps

回答

0

檢查,什麼$em->getRepository([...])->findOneByGroupname([...])返回。 顯然,它是falsenull

$group->setDescription()僅在$groupWithSameName(以及因此爲$group)爲空/假時才被執行。

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