3 * Zend Framework (http://framework.zend.com/)
5 * @link http://github.com/zendframework/zf2 for the canonical source repository
6 * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
7 * @license http://framework.zend.com/license/new-bsd New BSD License
10 namespace Zend\Mvc\View\Http
;
12 use Zend\Console\Request
as ConsoleRequest
;
13 use Zend\EventManager\AbstractListenerAggregate
;
14 use Zend\EventManager\EventManagerInterface
;
15 use Zend\Http\Request
as HttpRequest
;
16 use Zend\Mvc\MvcEvent
;
18 class InjectRoutematchParamsListener
extends AbstractListenerAggregate
21 * Should request params overwrite existing request params?
25 protected $overwrite = true;
30 public function attach(EventManagerInterface
$events)
32 $this->listeners
[] = $events->attach('dispatch', array($this, 'injectParams'), 90);
36 * Take parameters from RouteMatch and inject them into the request.
41 public function injectParams(MvcEvent
$e)
43 $routeMatchParams = $e->getRouteMatch()->getParams();
44 $request = $e->getRequest();
46 /** @var $params \Zend\Stdlib\Parameters */
47 if ($request instanceof ConsoleRequest
) {
48 $params = $request->params();
49 } elseif ($request instanceof HttpRequest
) {
50 $params = $request->get();
52 // unsupported request type
56 if ($this->overwrite
) {
57 foreach ($routeMatchParams as $key => $val) {
61 foreach ($routeMatchParams as $key => $val) {
62 if (!$params->offsetExists($key)) {
70 * Should RouteMatch parameters replace existing Request params?
72 * @param bool $overwrite
74 public function setOverwrite($overwrite)
76 $this->overwrite
= $overwrite;
82 public function getOverwrite()
84 return $this->overwrite
;