--- /dev/null
+<?php
+
+/*
+ * This file is part of the Symfony CMF package.
+ *
+ * (c) 2011-2015 Symfony CMF
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Cmf\Component\Routing\Event;
+
+use Symfony\Component\EventDispatcher\Event;
+use Symfony\Component\Routing\Route;
+
+/**
+ * Event fired before the dynamic router generates a url for a route.
+ *
+ * The name, parameters and absolute properties have the semantics of
+ * UrlGeneratorInterface::generate()
+ *
+ * @author Ben Glassman
+ *
+ * @see \Symfony\Component\Routing\Generator\UrlGeneratorInterface::generate()
+ */
+class RouterGenerateEvent extends Event
+{
+ /**
+ * The name of the route or the Route instance to generate.
+ *
+ * @var string|Route
+ */
+ private $route;
+
+ /**
+ * The parameters to use when generating the url.
+ *
+ * @var array
+ */
+ private $parameters;
+
+ /**
+ * The type of reference to be generated (one of the constants in UrlGeneratorInterface).
+ *
+ * @var bool|string
+ */
+ private $referenceType;
+
+ /**
+ * @param string|Route $route The route name or object
+ * @param array $parameters The parameters to use
+ * @param bool|string $referenceType The type of reference to be generated
+ */
+ public function __construct($route, $parameters, $referenceType)
+ {
+ $this->route = $route;
+ $this->parameters = $parameters;
+ $this->referenceType = $referenceType;
+ }
+
+ /**
+ * Get route name or object.
+ *
+ * @return string|Route
+ */
+ public function getRoute()
+ {
+ return $this->route;
+ }
+
+ /**
+ * Set route name or object.
+ *
+ * @param string|Route $route
+ */
+ public function setRoute($route)
+ {
+ $this->route = $route;
+ }
+
+ /**
+ * Get route parameters.
+ *
+ * @return array
+ */
+ public function getParameters()
+ {
+ return $this->parameters;
+ }
+
+ /**
+ * Set the route parameters.
+ *
+ * @param array $parameters
+ */
+ public function setParameters(array $parameters)
+ {
+ $this->parameters = $parameters;
+ }
+
+ /**
+ * Set a route parameter.
+ *
+ * @param string $key
+ * @param mixed $value
+ */
+ public function setParameter($key, $value)
+ {
+ $this->parameters[$key] = $value;
+ }
+
+ /**
+ * Remove a route parameter by key.
+ *
+ * @param string $key
+ */
+ public function removeParameter($key)
+ {
+ unset($this->parameters[$key]);
+ }
+
+ /**
+ * The type of reference to be generated (one of the constants in UrlGeneratorInterface).
+ *
+ * @return bool|string
+ */
+ public function getReferenceType()
+ {
+ return $this->referenceType;
+ }
+
+ /**
+ * The type of reference to be generated (one of the constants in UrlGeneratorInterface).
+ *
+ * @param bool|string $referenceType
+ */
+ public function setReferenceType($referenceType)
+ {
+ $this->referenceType = $referenceType;
+ }
+}