Example #1
0
 public function onDescriptorLoaded(DescriptorLoadedEvent $event)
 {
     $results = array();
     $map = $this->xmlRewritesMapFactory($event->getDescriptor());
     foreach ($event->getDescriptor()->getSourcesXml() as $xml) {
         $parse = $map->execute($xml);
         $res = isset($parse['rewrites']) ? $parse['rewrites'] : array();
         $results = array_merge($results, $res);
     }
     $rewriter = $event->getApplication()->getServices()->get($this->serviceName);
     $it = 0;
     foreach ($results as $url) {
         $it++;
         $roote = new Route($event->getDescriptor()->propertizeString($url['action']), $event->getDescriptor()->propertizeString($url['route']));
         foreach ($url['params'] as $paramName => $param) {
             $required = $param['required'];
             $regex = $param['regex'];
             $default = $param['value'];
             if ($required == 'true' || $required == '1' || empty($required)) {
                 $required = true;
             } elseif ($required == 'false' || $required == '0') {
                 $required = false;
             }
             $roote->addParameter(new RouteParameter($paramName, $default, $regex, $required));
         }
         $rewriter->addRoute($roote);
     }
 }