mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-06-26 12:23:06 +08:00
135 lines
3.2 KiB
PHP
135 lines
3.2 KiB
PHP
<?php
|
|
/**
|
|
* @copyright Copyright (c) 2021 深圳市酷瓜软件有限公司
|
|
* @license https://opensource.org/licenses/GPL-2.0
|
|
* @link https://www.koogua.com
|
|
*/
|
|
|
|
namespace App\Traits;
|
|
|
|
use Phalcon\Config;
|
|
use Phalcon\Di;
|
|
use Phalcon\Http\Request as HttpRequest;
|
|
use Phalcon\Http\Response as HttpResponse;
|
|
use Phalcon\Mvc\Dispatcher;
|
|
|
|
trait Response
|
|
{
|
|
|
|
public function notFound()
|
|
{
|
|
/**
|
|
* @var Dispatcher $dispatcher
|
|
*/
|
|
$dispatcher = Di::getDefault()->getShared('dispatcher');
|
|
|
|
$dispatcher->forward([
|
|
'module' => 'home',
|
|
'controller' => 'error',
|
|
'action' => 'show404',
|
|
]);
|
|
|
|
return false;
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
}
|