У меня была такая же ситуация, но теперь я нашел решение для этого. Теперь я могу указать URL-адрес запроса без .json и также могу получить данные Json в ответ.
В контроллере приложений добавьте сетевой ответ, который будет обрабатывать ваш ответ.
используйте Cake\Network\Response;
После этого вам нужно преобразовать ввод Json в массив. Поэтому поместите эту функцию getJsonInput()
в свой AppController
и вызовите ее в initialize()
.
public function getJsonInput() {
$data = file_get_contents("php://input");
$this->data = (isset($data) && $data != '') ? json_decode($data, true) : array();
}
Теперь в вашем контроллере у вас есть все данные сообщения в $this->data
. так что вы можете получить доступ ко всем входам. Вот пример:
class UsersController extends AppController {
public function index() {
if ($this->request->is('post')) {
//pr($this->data); //here is your all inputs
$this->message = 'success';
$this->status = true;
}
$this->respond();
}
}
Теперь в конце вашей функции вам нужно вызвать respond()
, который определен в AppController
public function respond() {
$this->response->type('json'); // this will convert your response to json
$this->response->body([
'status' => $this->status,
'code' => $this->code,
'responseData' => $this->responseData,
'message'=> $this->message,
'errors'=> $this->errors,
]); // Set your response in body
$this->response->send(); // It will send your response
$this->response->stop(); // At the end stop the response
}
Определите все переменные в AppController
как
public $status = false;
public $message = '';
public $responseData = array();
public $code = 200;
public $errors = '';
Еще одна вещь, которую нужно сделать, это:
В Response.php (/vendor/cakephp/cakephp/src/Network/Response.php)
вам нужно отредактировать одну строку с 586 echo $content;
по echo json_encode($content);
в функции _sendContent()
.
Вот и все. Теперь вы можете установить URL-адрес запроса как domain_name/project_name/users/index
.
person
Pooja Yadav
schedule
15.12.2016
Router::parseExtensions('json');
вместоRouter::extensions('json');
? - person Maraboc   schedule 02.11.2015Accept: application/json
, и вы получите вывод в формате json. - person Khushang Bhavnagarwala.   schedule 08.12.2015