Exemplo n.º 1
0
 protected function buildFormReferer(\Symfony\Component\HttpFoundation\Request $request, \Symfony\Component\Form\FormBuilder $builder, $object, $url = null)
 {
     $matcher = $this->admin->getService('router_default')->getMatcher();
     $baseUrl = $request->getBaseUrl();
     $referer = parse_url($request->headers->get('referer'));
     $referer_url = $referer['path'];
     if (strlen($baseUrl) > 1 && substr($referer['path'], 0, strlen($baseUrl)) == $baseUrl) {
         $referer_url = substr($referer['path'], strlen($baseUrl));
     }
     if ($referer_url === $referer['path']) {
         $baseUrl = null;
     }
     $referer_parameters = null;
     try {
         $referer_parameters = $matcher->match($referer_url);
     } catch (\Symfony\Component\Routing\Exception\ResourceNotFoundException $e) {
     }
     $parameters = $matcher->match($request->getPathInfo());
     if (!$referer_parameters || $parameters['_route'] !== $referer_parameters['_route']) {
         $url = $referer['path'] . (isset($referer['query']) ? '?' . $referer['query'] : '');
     }
     $builder->add('sf_admin_form_referer', 'sf_referer', array('referer_url_default' => $url, 'referer_url_route' => $parameters['_route'], 'referer_url_request' => $request, 'referer_url_matcher' => $matcher, 'referer_base_url' => $baseUrl));
     $builder->add('sf_admin_form_dynamic', 'sf_dynamic', array());
     if ($this->admin_loader->getContainer()->getParameter('kernel.debug')) {
         $builder->add('sf_admin_form_debug', 'choice', array('label' => 'Debug', 'mapped' => false, 'expanded' => true, 'data' => 0, 'widget_type' => 'inline', 'choices' => array('1' => 'Yes', '0' => 'No')));
     }
 }
 public function generate()
 {
     /**
      * @var \Doctrine\Common\Annotations\FileCacheReader
      */
     $reader = $this->admin->getService('annotation_reader');
     if ($this->controller) {
         $rc = new \ReflectionClass($this->controller);
         foreach ($rc->getMethods() as $m) {
             if ($m instanceof \ReflectionMethod) {
                 if ($m->isAbstract() || $m->isAbstract() || $m->isConstructor() || $m->isDestructor() || $m->isStatic()) {
                     continue;
                 }
                 $_as = $reader->getMethodAnnotations($m);
                 $as = array();
                 foreach ($_as as $annot) {
                     $_class = get_class($annot);
                     if (isset($as[$_class])) {
                         if (is_array($as[$_class])) {
                             $as[$_class][] = $annot;
                         } else {
                             $as[$_class] = array($as[$_class], $annot);
                         }
                     } else {
                         $as[$_class] = $annot;
                     }
                 }
                 if (!isset($as[self::ROUTE_ANNOT_CLASS])) {
                     continue;
                 }
                 if (isset($as[self::SYMFONY_ROUTE_ANNOT_CLASS])) {
                     throw new \Exception(sprintf("%s (AdminRoute, SymfonyRoute) duplicate ", $this->err_msg));
                 }
                 $annot = $as[self::ROUTE_ANNOT_CLASS];
                 if ($this->addRoute($m, $annot, $as)) {
                     $this->page_loader->addFileResource($rc->getFileName());
                 }
             }
         }
     }
 }