Я использую 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'));
}
}
}
И это мой запрос с результатом:
Я надеюсь, что кто-то может помочь. заранее спасибо
Я нашел решение. Это не проблема в коде, а в моем "теле". Мне пришлось переключиться с форм-данных на x-www-form-urlencoded в Postman chrome extension, и теперь метод put отлично работает.
Вот пример изображения:
Это должна быть 'task' => $this->input->post('task')
и т.д. (Вам не хватает ввода).