Метод PUT не работает (CodeIngiter + сервер Codeigniter отдыха)

1

Я использую Codeigniter 3.01 и сервер покоя Codeigniter
У меня проблемы с методом put. Когда я запускаю http://codeang.si/api/task/id/2 через метод put (проверьте прикрепленное изображение) и попробуйте var_dump($data); я получаю этот "пустой" результат:

array (size=3)
  'task' => boolean false
  'active' => boolean false
  'date_c' => string '2015-10-11 12:10' (length=16) 

Это мой контроллер api:

    <?php
require(APPPATH.'libraries/REST_Controller.php');


class Api extends REST_Controller{

    function tasks_get(){
        // respond with information about a task
        $task = $this->tm->get_all();
        if($task){
            $this->response($task, 200);
        }else{
            $this->response(NULL, 404);
        }
    }

    function task_get(){
        // respond with information about a task
        if(!$this->get('id')){
            $this->response(NULL, 400);
        }
        $task = $this->tm->get($this->get('id'));
        if($task){
            $this->response($task, 200);
        }else{
            $this->response(NULL, 404);
        }
    }

    function task_post(){
        // create task
        $data = array(
            'task' => $this->post('task'),
            'active' => $this->post('active'),
            'date_c' => date("Y-m-d h:i:s")
        );
        $result = $this->tm->create( $data);
        if($result === FALSE){
            $this->response(array('status' => 'failed'));
        }else{
            $this->response(array('status' => 'success'));
        }
    }

    function task_put(){
        // update task
        $id = $this->get('id');
        $data = array(
            'task' => $this->put('task'),
            'active' => $this->put('active'),
            'date_u' => date("Y-m-d h:i:s")
        );
        var_dump($data, $id);
        die();
        $result = $this->tm->update($this->get('id'), $data);
        if($result === FALSE){
            $this->response(array('status' => 'failed'));
        }else{
            $this->response(array('status' => 'success'));
        }
    }

    function task_delete(){
        //delete a task and respond with a status/errors
        $result = $this->tm->delete($this->get('id'));
        if($result === FALSE){
            $this->response(array('status' => 'failed'));
        }else{
            $this->response(array('status' => 'success'));
        }
    }

}

И это мой запрос с результатом: Изображение 174551

Я надеюсь, что кто-то может помочь. заранее спасибо

Теги:
codeigniter
rest

2 ответа

3
Лучший ответ

Я нашел решение. Это не проблема в коде, а в моем "теле". Мне пришлось переключиться с форм-данных на x-www-form-urlencoded в Postman chrome extension, и теперь метод put отлично работает.

Вот пример изображения: Изображение 174551

0

Это должна быть 'task' => $this->input->post('task') и т.д. (Вам не хватает ввода).

  • 1
    извините, но не правда. Я использую сервер Codeigniter отдыха, поэтому этот способ должен сделать это. я перешел с form-data на x-www-form-urlencoded в почтальоне, и теперь он работает. Спасибо за любую помощь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню