Я использую Phalcon 1.3.3 и PHP 5.4.
В моем контроллере у меня есть что-то вроде:
public function indexAction() {
$this->response->setContentType('application/json');
$data = json_encode(['some data']);
$this->response->setContent($data);
return $this->response->send();
}
Если я добавлю «эхо» в это действие, я нигде его не увижу, и я думаю, что это связано с тем фактом, что Phalcon использует вывод буфера (Можно получить Phalcon \ Mvc \ View отрендеренный вывод в переменную?)
Но это не совсем моя проблема, моя проблема в том, что если у меня есть предупреждения / уведомления о пропущенной переменной, или необъявленной константе, или использование устаревших методов, я не могу увидеть их на отображаемой странице.
Я вижу их в журналах, но не на самой странице, что немного раздражает при разработке. В производстве, очевидно, это не проблема.
PS: у меня «display_errors» и «display_startup_errors» установлены в 1, и если я ставлю существовать перед рендерингом страницы, я вижу все предупреждения
Я использую это, чтобы вернуть JSON:
$expireDate = new \DateTime();
$this->response->setHeader('Access-Control-Allow-Origin', '*');
$this->response->setContentType('application/json', 'UTF-8');
$this->response->setExpires($expireDate);
$this->response->setHeader('Cache-Control', 'private, max-age=0, must-revalidate');
$this->response->sendHeaders();
echo json_encode(array('response' => $response, 'error' => $this->api_error));
и в index.php
/**
* Handle the request
*/
$application = new \Phalcon\Mvc\Application($di);
//disable view service in general
$application->useImplicitView(false);
если вы хотите отключить рендеринг вида только для некоторых мест, вы можете использовать в контроллере:
$this->view->disable();
echo $data;
Других решений пока нет …