1<?php 2/** 3 * Zend Framework (http://framework.zend.com/) 4 * 5 * @link http://github.com/zendframework/zf2 for the canonical source repository 6 * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) 7 * @license http://framework.zend.com/license/new-bsd New BSD License 8 */ 9 10namespace Zend\View; 11 12use ArrayAccess; 13use Zend\EventManager\Event; 14use Zend\Stdlib\RequestInterface as Request; 15use Zend\Stdlib\ResponseInterface as Response; 16use Zend\View\Model\ModelInterface as Model; 17use Zend\View\Renderer\RendererInterface as Renderer; 18 19class ViewEvent extends Event 20{ 21 /**#@+ 22 * View events triggered by eventmanager 23 */ 24 const EVENT_RENDERER = 'renderer'; 25 const EVENT_RENDERER_POST = 'renderer.post'; 26 const EVENT_RESPONSE = 'response'; 27 /**#@-*/ 28 29 /** 30 * @var null|Model 31 */ 32 protected $model; 33 34 /** 35 * @var Renderer 36 */ 37 protected $renderer; 38 39 /** 40 * @var null|Request 41 */ 42 protected $request; 43 44 /** 45 * @var null|Response 46 */ 47 protected $response; 48 49 /** 50 * @var mixed 51 */ 52 protected $result; 53 54 /** 55 * Set the view model 56 * 57 * @param Model $model 58 * @return ViewEvent 59 */ 60 public function setModel(Model $model) 61 { 62 $this->model = $model; 63 return $this; 64 } 65 66 /** 67 * Set the MVC request object 68 * 69 * @param Request $request 70 * @return ViewEvent 71 */ 72 public function setRequest(Request $request) 73 { 74 $this->request = $request; 75 return $this; 76 } 77 78 /** 79 * Set the MVC response object 80 * 81 * @param Response $response 82 * @return ViewEvent 83 */ 84 public function setResponse(Response $response) 85 { 86 $this->response = $response; 87 return $this; 88 } 89 90 /** 91 * Set result of rendering 92 * 93 * @param mixed $result 94 * @return ViewEvent 95 */ 96 public function setResult($result) 97 { 98 $this->result = $result; 99 return $this; 100 } 101 102 /** 103 * Retrieve the view model 104 * 105 * @return null|Model 106 */ 107 public function getModel() 108 { 109 return $this->model; 110 } 111 112 /** 113 * Set value for renderer 114 * 115 * @param Renderer $renderer 116 * @return ViewEvent 117 */ 118 public function setRenderer(Renderer $renderer) 119 { 120 $this->renderer = $renderer; 121 return $this; 122 } 123 124 /** 125 * Get value for renderer 126 * 127 * @return null|Renderer 128 */ 129 public function getRenderer() 130 { 131 return $this->renderer; 132 } 133 134 /** 135 * Retrieve the MVC request object 136 * 137 * @return null|Request 138 */ 139 public function getRequest() 140 { 141 return $this->request; 142 } 143 144 /** 145 * Retrieve the MVC response object 146 * 147 * @return null|Response 148 */ 149 public function getResponse() 150 { 151 return $this->response; 152 } 153 154 /** 155 * Retrieve the result of rendering 156 * 157 * @return mixed 158 */ 159 public function getResult() 160 { 161 return $this->result; 162 } 163 164 /** 165 * Get event parameter 166 * 167 * @param string $name 168 * @param mixed $default 169 * @return mixed 170 */ 171 public function getParam($name, $default = null) 172 { 173 switch ($name) { 174 case 'model': 175 return $this->getModel(); 176 case 'renderer': 177 return $this->getRenderer(); 178 case 'request': 179 return $this->getRequest(); 180 case 'response': 181 return $this->getResponse(); 182 case 'result': 183 return $this->getResult(); 184 default: 185 return parent::getParam($name, $default); 186 } 187 } 188 189 /** 190 * Get all event parameters 191 * 192 * @return array|\ArrayAccess 193 */ 194 public function getParams() 195 { 196 $params = parent::getParams(); 197 $params['model'] = $this->getModel(); 198 $params['renderer'] = $this->getRenderer(); 199 $params['request'] = $this->getRequest(); 200 $params['response'] = $this->getResponse(); 201 $params['result'] = $this->getResult(); 202 return $params; 203 } 204 205 /** 206 * Set event parameters 207 * 208 * @param array|object|ArrayAccess $params 209 * @return ViewEvent 210 */ 211 public function setParams($params) 212 { 213 parent::setParams($params); 214 if (!is_array($params) && !$params instanceof ArrayAccess) { 215 return $this; 216 } 217 218 foreach (array('model', 'renderer', 'request', 'response', 'result') as $param) { 219 if (isset($params[$param])) { 220 $method = 'set' . $param; 221 $this->$method($params[$param]); 222 } 223 } 224 return $this; 225 } 226 227 /** 228 * Set an individual event parameter 229 * 230 * @param string $name 231 * @param mixed $value 232 * @return ViewEvent 233 */ 234 public function setParam($name, $value) 235 { 236 switch ($name) { 237 case 'model': 238 $this->setModel($value); 239 break; 240 case 'renderer': 241 $this->setRenderer($value); 242 break; 243 case 'request': 244 $this->setRequest($value); 245 break; 246 case 'response': 247 $this->setResponse($value); 248 break; 249 case 'result': 250 $this->setResult($value); 251 break; 252 default: 253 parent::setParam($name, $value); 254 break; 255 } 256 return $this; 257 } 258} 259