summaryrefslogtreecommitdiffstats
path: root/src/Controller/View.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Controller/View.php')
-rw-r--r--src/Controller/View.php64
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);
+ }
+}