2015-05-19 4 views
2

Я делаю API, и у меня возникают проблемы с методом PUT, я без проблем выполнял методы GET и POST, но теперь моя проблема в том, что я не могу получить параметры PUT, и я так сумасшедший сейчас.PHP Slim и PUT request

Мой код:

$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 Dev издание говорит об этом):

groupname=aaa&description=aaa 

И что я получаю, когда заявление сделано

неисправимая ошибка: Вызов функции-члена setDescription() на null in E: \ Dev \ XAMPP \ PHP \ API \ приложение \ app.php на линии

линии 131 составляет $ группы-> setDescription (...);

Я пытался использовать

  • $ app-> request-> положим ('описание');

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

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

с таким же результатом. Я надеюсь, что вы можете мне помочь.

+0

Что такое '$ group'? – vps

+1

У вас нет переменной '$ group' в вашем коде. Либо у вас его вообще нет, и в этом случае вы не сможете опускать какие-либо методы на нем, или вам нужно показать, где в вашем коде вы его назначили. –

+0

Пожалуйста, показать полный код. – vps

ответ

0

Проверьте, что $em->getRepository([...])->findOneByGroupname([...]) возвращается. По-видимому, это false или null.

$group->setDescription() ТОЛЬКО выполняется, если $groupWithSameName (и поэтому $group как есть) - null/false.

Я мог представить, что вы забыли ! в инструкции if? if(!$groupWithSameName){

Смежные вопросы