示例#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')));
     }
 }