这是一个基于 View 的类,呈现为 HTML 或 JSON(Api 调用)。
use \Phalcon\Mvc\View;
class ApiView extends View
{
const OUTPUT_DEFAULT = 0;
const OUTPUT_JSON = 1;
public $output_type = self::OUTPUT_DEFAULT;
public function setOutputJson()
{
$this->output_type = ApiView::OUTPUT_JSON;
}
public function setOutputDefault() {
$this->output_type = ApiView::OUTPUT_DEFAULT;
}
public function render($controllerName, $actionName, $params = null)
{
if ($this->output_type === ApiView::OUTPUT_JSON)
{
echo json_encode($this->getParamsToView());
$this->disable();
}
parent::render($controllerName, $actionName, $params);
if ($this->output_type === GollgiView::OUTPUT_JSON) {
header("Content-type: application/json, 'UTF-8')");
}
}
public function getOutputType() {
return $this->output_type;
}
}
更改 config/service.php 以默认创建 ApiView
/**
* Setting up the view component
*/
$di->setShared('view', function () use ($config) {
$view = new ApiView();
$view->setViewsDir($config->application->viewsDir);
$view->registerEngines(['.phtml' => 'Phalcon\Mvc\View\Engine\Php']);
return $view;
});
在控制器中,您可以决定您想要什么类型的输出
if ($this->request->has('api')) {
$this->view->setOutputJson();
}