Browse Source

Fix BC warnings about search form, refs #618

Jordi Boggiano 9 years ago
parent
commit
a0e730806c

+ 14 - 15
src/Packagist/WebBundle/Controller/WebController.php

@@ -18,6 +18,7 @@ use Pagerfanta\Adapter\SolariumAdapter;
 use Pagerfanta\Pagerfanta;
 use Predis\Connection\ConnectionException;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
+use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
 use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Request;
@@ -37,11 +38,13 @@ class WebController extends Controller
         return array('page' => 'home');
     }
 
+    /**
+     * Rendered by views/Web/searchSection.html.twig
+     */
     public function searchFormAction(Request $req)
     {
         $form = $this->createForm(SearchQueryType::class, new SearchQuery(), [
             'action' => $this->generateUrl('search.ajax'),
-            'method' => 'GET',
         ]);
 
         $filteredOrderBys = $this->getFilteredOrderedBys($req);
@@ -49,9 +52,7 @@ class WebController extends Controller
 
         $this->computeSearchQuery($req, $filteredOrderBys);
 
-        if ($req->query->has('search_query')) {
-            $form->submit($req);
-        }
+        $form->handleRequest($req);
 
         $orderBysViewModel = $this->getOrderBysViewModel($req, $normalizedOrderBys);
         return $this->render('PackagistWebBundle:Web:searchForm.html.twig', array(
@@ -63,6 +64,7 @@ class WebController extends Controller
     /**
      * @Route("/search/", name="search.ajax")
      * @Route("/search.{_format}", requirements={"_format"="(html|json)"}, name="search", defaults={"_format"="html"})
+     * @Method({"GET"})
      */
     public function searchAction(Request $req)
     {
@@ -111,18 +113,15 @@ class WebController extends Controller
                 $select->addSorts($normalizedOrderBys);
             }
 
-            if ($req->query->has('search_query')) {
-                $form->submit($req);
-
-                if ($form->isValid()) {
-                    $escapedQuery = $select->getHelper()->escapeTerm($form->getData()->getQuery());
-                    $escapedQuery = preg_replace('/(^| )\\\\-(\S)/', '$1-$2', $escapedQuery);
-                    $escapedQuery = preg_replace('/(^| )\\\\\+(\S)/', '$1+$2', $escapedQuery);
-                    if ((substr_count($escapedQuery, '"') % 2) == 0) {
-                        $escapedQuery = str_replace('\\"', '"', $escapedQuery);
-                    }
-                    $select->setQuery($escapedQuery);
+            $form->handleRequest($req);
+            if ($form->isValid()) {
+                $escapedQuery = $select->getHelper()->escapeTerm($form->getData()->getQuery());
+                $escapedQuery = preg_replace('/(^| )\\\\-(\S)/', '$1-$2', $escapedQuery);
+                $escapedQuery = preg_replace('/(^| )\\\\\+(\S)/', '$1+$2', $escapedQuery);
+                if ((substr_count($escapedQuery, '"') % 2) == 0) {
+                    $escapedQuery = str_replace('\\"', '"', $escapedQuery);
                 }
+                $select->setQuery($escapedQuery);
             }
 
             $paginator = new Pagerfanta(new SolariumAdapter($solarium, $select));

+ 1 - 0
src/Packagist/WebBundle/Form/Type/SearchQueryType.php

@@ -40,6 +40,7 @@ class SearchQueryType extends AbstractType
         $resolver->setDefaults(array(
             'data_class' => SearchQuery::class,
             'csrf_protection' => false,
+            'method' => 'GET',
         ));
     }