forked from zer.ooo/web
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
2.9 KiB
PHP
159 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* Created by PhpStorm.
|
|
* User: eater
|
|
* Date: 3/29/16
|
|
* Time: 10:21 PM
|
|
*/
|
|
|
|
namespace Eater\Glim\Handler;
|
|
|
|
|
|
use Eater\Glim\Service\TwigVars;
|
|
use Interop\Container\ContainerInterface;
|
|
use Slim\Container;
|
|
use Slim\Http\Request;
|
|
use Slim\Http\Response;
|
|
use Eater\Glim\Core;
|
|
use Eater\Glim\Helper\EasyContainer;
|
|
|
|
abstract class Main implements ContainerInterface
|
|
{
|
|
use EasyContainer;
|
|
|
|
/**
|
|
* @var Core
|
|
*/
|
|
protected $core;
|
|
|
|
/**
|
|
* @var Request
|
|
*/
|
|
protected $request;
|
|
|
|
/**
|
|
* @var Response
|
|
*/
|
|
protected $response;
|
|
|
|
/**
|
|
* Main constructor.
|
|
* @param Core $core
|
|
* @param Request $request
|
|
* @param Response $response
|
|
* @param Container $container
|
|
*/
|
|
public function __construct(Core $core, Request $request, Response $response, Container $container)
|
|
{
|
|
$this->core = $core;
|
|
$this->setRequest($request);
|
|
$this->setResponse($response);
|
|
$this->setContainer($container);
|
|
}
|
|
|
|
/**
|
|
* @return Core
|
|
*/
|
|
protected function getCore()
|
|
{
|
|
return $this->core;
|
|
}
|
|
|
|
/**
|
|
* @return Response|void
|
|
*/
|
|
public function beforeHandle()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* @return Response
|
|
*/
|
|
public function handle()
|
|
{
|
|
return $this->getResponse();
|
|
}
|
|
|
|
/**
|
|
* @return Response
|
|
*/
|
|
public function getResponse()
|
|
{
|
|
return $this->response;
|
|
}
|
|
|
|
/**
|
|
* @param Response $response
|
|
*/
|
|
public function setResponse($response)
|
|
{
|
|
$this->response = $response;
|
|
}
|
|
|
|
/**
|
|
* @return Request
|
|
*/
|
|
public function getRequest()
|
|
{
|
|
return $this->request;
|
|
}
|
|
|
|
/**
|
|
* @param Request $request
|
|
*/
|
|
public function setRequest($request)
|
|
{
|
|
$this->request = $request;
|
|
}
|
|
|
|
/**
|
|
* @param string $template
|
|
* @param array $context
|
|
* @return Response
|
|
*/
|
|
public function render($template, $context = [])
|
|
{
|
|
$core = $this->getCore();
|
|
$twig = $core->getTwig();
|
|
/** @var TwigVars */
|
|
$twigVars = $this->get('twig-vars');
|
|
|
|
return $this->getResponse()->write($twig->render($template, $twigVars->getVars() + $context));
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @return string
|
|
*/
|
|
public function post($name)
|
|
{
|
|
$request = $this->getRequest();
|
|
return $request->getParsedBodyParam($name);
|
|
}
|
|
|
|
public function redirect($url)
|
|
{
|
|
$response = $this->getResponse();
|
|
return $response->withRedirect($url);
|
|
}
|
|
|
|
/**
|
|
* @param array $array
|
|
* @return Response
|
|
*/
|
|
public function json($array)
|
|
{
|
|
return $this->getResponse()
|
|
->withHeader('Content-Type', 'application/json')
|
|
->write(json_encode($array));
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @return string
|
|
*/
|
|
public function attr($name)
|
|
{
|
|
return $this->getRequest()->getAttribute($name);
|
|
}
|
|
} |