blob: 9f0f0b08131b35985b457fd7d651116c466fc31b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
<?php
namespace Jasny\Controller;
use Jasny\ViewInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
/**
* View using a template engine
*/
trait View
{
/**
* @var ViewInterface
*/
protected $viewer;
/**
* Get server request
*
* @return ServerRequestInterface
*/
abstract public function getRequest();
/**
* Get server request
*
* @return ResponseInterface
*/
abstract public function getResponse();
/**
* Get response. set for controller
*
* @param ResponseInterface $response
* @return void
*/
abstract public function setResponse(ResponseInterface $response);
/**
* Get the template engine abstraction
*
* @return ViewInterface
*/
public function getViewer()
{
if (!isset($this->viewer)) {
throw new \LogicException("Viewer has not been set");
}
return $this->viewer;
}
/**
* Get the template engine abstraction
*
* @param ViewInterface $viewer
*/
public function setViewer(ViewInterface $viewer)
{
$this->viewer = $viewer;
}
/**
* Get path of the view files
*
* @return string
*/
public 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()->render($this->getResponse(), $name, $context);
$this->setResponse($response);
}
}
|