|
@@ -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));
|