<?php
namespace App\Controllers;
use Nimble\Validator\Validator;
class Controller
{
protected $container;
protected $request;
protected $response;
public function __construct($container)
{
$this->container = $container;
$this->request = $container->request;
$this->response = $container->response;
if (method_exists($this, 'initialize')) {
$this->initialize();
}
$this->enableCrossRequest();
}
private function enableCrossRequest()
{
$origin = $this->request->header('origin');
$this->setHeader('Access-Control-Allow-Origin', $origin);
$this->setHeader('Access-Control-Allow-Credentials', 'true');
$this->setHeader('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept, X-Requested-With, Cache-Control, Authorization');
$this->setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
}
protected function setHeader($key, $value)
{
$this->container->response->header($key, $value);
}
protected function cookie($name, $value, $expire = 0, $path = '/', $domain = '', $secure = false, $httpOnly = false)
{
return $this->container->response->cookie($name, $value, $expire, $path, $domain, $secure, $httpOnly);
}
protected function view($tpl, array $vars = [])
{
return $this->container->view->display($tpl, $vars);
}
protected function outputJson($data = [], $errno = 0, $message = 'success')
{
$this->setHeader("Content-Type", "application/json");
return json_encode([
'errno' => $errno,
'message' => $message,
'data' => $data,
]);
}
protected function validator(array $validReg, array $validMsg = [])
{
if (!isset($validMsg['require'])) {
$validMsg['require'] = ':attribute can not be empty';
}
return Validator::make($validReg, $validMsg);
}
}