SearchController.php 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. namespace Muzich\CoreBundle\Controller;
  3. use Muzich\CoreBundle\lib\Controller;
  4. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  5. use Muzich\CoreBundle\Searcher\ElementSearcher;
  6. use Muzich\CoreBundle\Form\Search\ElementSearchForm;
  7. use Doctrine\ORM\Query;
  8. class SearchController extends Controller
  9. {
  10. /**
  11. * Procédure de recherche, qui met a jour l'objet de recherche (ainsi
  12. * que les paramétres en session).
  13. *
  14. */
  15. public function searchElementsAction()
  16. {
  17. $request = $this->getRequest();
  18. $search_object = $this->getElementSearcher($this->getUser()->getId());
  19. $search_form = $this->createForm(
  20. new ElementSearchForm(),
  21. $search_object->getParams(),
  22. array('tags' => $this->getTagsArray())
  23. );
  24. if ($request->getMethod() == 'POST')
  25. {
  26. $search_form->bindRequest($request);
  27. if ($search_form->isValid())
  28. {
  29. $search_object->update($search_form->getData());
  30. $this->setElementSearcher($search_object);
  31. }
  32. }
  33. if ($this->getRequest()->isXmlHttpRequest())
  34. {
  35. // template qui apelle doSearchElementsAction
  36. }
  37. else
  38. {
  39. return $this->redirect($this->generateUrl('home'));
  40. }
  41. }
  42. /**
  43. * Procédure chargé d'afficher les résultats de la recherche.
  44. */
  45. public function doSearchElementsAction(ElementSearcher $search, $template = 'default')
  46. {
  47. $elements = $this->getDoctrine()
  48. ->getRepository('MuzichCoreBundle:Element')
  49. ->findBySearch($search)
  50. ->execute()
  51. ;
  52. return $this->render(
  53. 'MuzichCoreBundle:SearchElement:default.html.twig',
  54. array('elements' => $elements)
  55. );
  56. }
  57. }