mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-26 20:52:44 +08:00
112 lines
2.7 KiB
PHP
112 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace App\Traits;
|
|
|
|
use Phalcon\Config;
|
|
use Phalcon\Di;
|
|
use Phalcon\Http\Request as HttpRequest;
|
|
use Phalcon\Http\Response as HttpResponse;
|
|
|
|
trait Response
|
|
{
|
|
|
|
public function setCors()
|
|
{
|
|
/**
|
|
* @var Config $config
|
|
*/
|
|
$config = Di::getDefault()->getShared('config');
|
|
|
|
$cors = $config->get('cors')->toArray();
|
|
|
|
if (!$cors['enabled']) return;
|
|
|
|
if (is_array($cors['allow_headers'])) {
|
|
$cors['allow_headers'] = implode(',', $cors['allow_headers']);
|
|
}
|
|
|
|
if (is_array($cors['allow_methods'])) {
|
|
$cors['allow_methods'] = implode(',', $cors['allow_methods']);
|
|
}
|
|
|
|
/**
|
|
* @var HttpRequest $request
|
|
*/
|
|
$request = Di::getDefault()->getShared('request');
|
|
|
|
$origin = $request->getHeader('Origin');
|
|
|
|
if (is_array($cors['allow_origin']) && in_array($origin, $cors['allow_origin'])) {
|
|
$cors['allow_origin'] = $origin;
|
|
}
|
|
|
|
/**
|
|
* @var HttpResponse $response
|
|
*/
|
|
$response = Di::getDefault()->getShared('response');
|
|
|
|
$response->setHeader('Access-Control-Allow-Origin', $cors['allow_origin']);
|
|
|
|
if ($request->isOptions()) {
|
|
$response->setHeader('Access-Control-Allow-Headers', $cors['allow_headers']);
|
|
$response->setHeader('Access-Control-Allow-Methods', $cors['allow_methods']);
|
|
}
|
|
}
|
|
|
|
public function jsonSuccess($content = [])
|
|
{
|
|
$content['code'] = 0;
|
|
|
|
$content['msg'] = $content['msg'] ?? '';
|
|
|
|
/**
|
|
* @var HttpResponse $response
|
|
*/
|
|
$response = Di::getDefault()->getShared('response');
|
|
|
|
$response->setStatusCode(200);
|
|
|
|
$response->setJsonContent($content);
|
|
|
|
return $response;
|
|
}
|
|
|
|
public function jsonError($content = [])
|
|
{
|
|
$content['code'] = $content['code'] ?? 1;
|
|
|
|
$content['msg'] = $content['msg'] ?? $this->getErrorMessage($content['code']);
|
|
|
|
/**
|
|
* @var HttpResponse $response
|
|
*/
|
|
$response = Di::getDefault()->getShared('response');
|
|
|
|
$response->setJsonContent($content);
|
|
|
|
return $response;
|
|
}
|
|
|
|
public function jsonPaginate($paginate)
|
|
{
|
|
$items = $paginate->items ?? [];
|
|
$totalItems = $paginate->total_items ?? 0;
|
|
$totalPages = $paginate->total_pages ?? 0;
|
|
|
|
$content = [
|
|
'items' => $items,
|
|
'total_items' => $totalItems,
|
|
'total_pages' => $totalPages,
|
|
];
|
|
|
|
return $this->jsonSuccess($content);
|
|
}
|
|
|
|
public function getErrorMessage($code)
|
|
{
|
|
$errors = require config_path('errors.php');
|
|
|
|
return $errors[$code] ?? $code;
|
|
}
|
|
|
|
} |