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