diff options
Diffstat (limited to 'src/Controller/View.php')
-rw-r--r-- | src/Controller/View.php | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/Controller/View.php b/src/Controller/View.php new file mode 100644 index 0000000..f3e39de --- /dev/null +++ b/src/Controller/View.php @@ -0,0 +1,64 @@ +<?php + +namespace Jasny\Controller; + +use Jasny\ViewInterface; +use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Message\ResponseInterface; + +/** + * View using a template engine + */ +trait View +{ + /** + * Get server request + * + * @return ServerRequestInterface + */ + abstract public function getRequest(); + + /** + * Get response. set for controller + * + * @param ResponseInterface $response + */ + abstract public function setResponse(ResponseInterface $response); + + /** + * Get the template engine abstraction + * + * @return ViewInterface + */ + abstract public function getViewer(); + + + /** + * Get path of the view files + * + * @return string + */ + protected function getViewPath() + { + return getcwd(); + } + + /** + * View rendered template + * + * @param string $name Template name + * @param array $context Template context + */ + public function view($name, array $context = []) + { + $context += ['current_url', $this->getRequest()->getUri()]; + + if (method_exists($this, 'flash')) { + $context += ['flash' => $this->flash()]; + } + + $response = $this->getViewer()->view($this->getResponse(), $name, $context); + + $this->setResponse($response); + } +} |