Пример #1
0
 /**
  * Modifies the ParamConverterManager instance.
  *
  * @param FilterControllerEvent $event A FilterControllerEvent instance
  */
 public function onCoreController(FilterControllerEvent $event)
 {
     $controller = $event->getController();
     $request = $event->getRequest();
     $configurations = array();
     if ($configuration = $request->attributes->get('_converters')) {
         $configurations = is_array($configuration) ? $configuration : array($configuration);
     }
     if (is_array($controller)) {
         $r = new \ReflectionMethod($controller[0], $controller[1]);
     } else {
         $r = new \ReflectionFunction($controller);
     }
     // automatically apply conversion for non-configured objects
     foreach ($r->getParameters() as $param) {
         if ($param->getClass() && !$request->attributes->get($param->getName())) {
             $configuration = new ParamConverter(array());
             $configuration->setName($param->getName());
             $configuration->setClass($param->getClass()->getName());
             $configuration->setIsOptional($param->isOptional());
             $configurations[] = $configuration;
         }
     }
     $this->manager->apply($request, $configurations);
 }
Пример #2
0
 /**
  * Modifies the ParamConverterManager instance.
  *
  * @param FilterControllerEvent $event A FilterControllerEvent instance
  */
 public function onCoreController(FilterControllerEvent $event)
 {
     $controller = $event->getController();
     $request = $event->getRequest();
     $configurations = array();
     if ($configuration = $request->attributes->get('_converters')) {
         foreach (is_array($configuration) ? $configuration : array($configuration) as $configuration) {
             $configurations[$configuration->getName()] = $configuration;
         }
     }
     if (is_array($controller)) {
         $r = new \ReflectionMethod($controller[0], $controller[1]);
     } else {
         $r = new \ReflectionFunction($controller);
     }
     // automatically apply conversion for non-configured objects
     foreach ($r->getParameters() as $param) {
         if (!$param->getClass()) {
             continue;
         }
         $name = $param->getName();
         // the parameter is already set, so disable the conversion
         if ($request->attributes->has($name)) {
             unset($configurations[$name]);
         } else {
             if (isset($configurations[$name])) {
                 $configuration = $configurations[$name];
             } else {
                 $configuration = new ParamConverter(array());
                 $configuration->setName($name);
                 $configuration->setClass($param->getClass()->getName());
             }
             $configuration->setIsOptional($param->isOptional());
             $configurations[$name] = $configuration;
         }
     }
     $this->manager->apply($request, array_values($configurations));
 }
 public function testParamConverterFindWithOptionalParam()
 {
     $paramConverter = new PropelParamConverter();
     $request = new Request(array(), array(), array('book' => null));
     $configuration = new ParamConverter(array('class' => 'Propel\\PropelBundle\\Tests\\Fixtures\\Model\\Book', 'name' => 'book'));
     $configuration->setIsOptional(true);
     $paramConverter->apply($request, $configuration);
     $this->assertNull($request->attributes->get('book'), 'param "book" should be null if book is not found and the parameter is optional');
 }