src/Controller/EditionController.php line 12

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Component\HttpFoundation\Response;
  4. use App\Entity\Edition;
  5. use App\Form\EditionNewType;
  6. use DateTime;
  7. class EditionController extends BeehiveController{
  8.   public function listAll(): Response {
  9.     $entityManager $this->getDoctrine()->getManager();
  10.     $repository $entityManager->getRepository(Edition::class);
  11.     $editions $repository->findBy([], ['sort' => 'ASC']);
  12.     return $this->render('edition/listAll.html.twig', ['editions' => $editions]);
  13.   }
  14.   public function list(): Response {
  15.     $entityManager $this->getDoctrine()->getManager();
  16.     $repository $entityManager->getRepository(Edition::class);
  17.     $editions = array();
  18.     
  19.     if ($this->request->getMethod() == 'POST') {
  20.       
  21.       // PARAMETERS
  22.       $limit         $this->getParameter('rows');
  23.       $page          $this->getParameter('page');
  24.       $offset        $page $limit $limit;
  25.       $offset        $offset $offset;
  26.       $sort          $this->getParameter('sidx');
  27.       $sortDirection $this->getParameter('sord');
  28.       // ODER BY
  29.       $orderBy ' ORDER BY e.' $sort ' ' $sortDirection;
  30.       // WHERE
  31.       $where '';
  32.       if($this->getParameter('_search') == 'true'){
  33.         $where '';
  34.         $prefix ' WHERE ';
  35.         foreach(array('sort''title''collection''volume''remark''material') as $field){
  36.           if(strlen($this->getParameter($field))){
  37.             $where .= $prefix 'e.' $field ' LIKE \'%' $this->getParameter($field) . '%\'';
  38.             $prefix ' AND ';
  39.           }
  40.         }
  41.       }
  42.       // LIMIT
  43.       $query $entityManager->createQuery('SELECT count(e.id) FROM App\Entity\Edition e ' $where);
  44.       $count $query->getSingleScalarResult();
  45.       $totalPages = ($count && $limit 0) ? ceil($count/$limit) : 0;
  46.       // QUERY
  47.       $query $entityManager->createQuery('SELECT e FROM App\Entity\Edition e ' $where ' ' $orderBy)->setFirstResult($offset)->setMaxResults($limit);
  48.       
  49.       $editions $query->getResult();
  50.       return $this->render('edition/list.xml.twig', ['editions' => $editions'count' => $count'totalPages' => $totalPages'page' => $page]);
  51.     } else {
  52.       return $this->render('edition/list.html.twig', ['editions' => $editions]);
  53.     }
  54.   }
  55.   
  56.   public function new(): Response {
  57.     $edition = new Edition();
  58.     
  59.     $entityManager $this->getDoctrine()->getManager();
  60.     $repository $entityManager->getRepository(Edition::class);
  61.     $form $this->createForm(EditionNewType::class, $edition);
  62.     if ($this->request->getMethod() == 'POST') {
  63.       $form->handleRequest($this->request);
  64.       if ($form->isValid()) {
  65.         $entityManager->persist($edition);
  66.         $entityManager->flush();
  67.         $this->addFlash('notice''Die Edition »' $edition->getSort() . ' = ' $edition->getTitle() . '« wurde angelegt.');
  68.         return $this->redirect($this->generateUrl('PapyrillioBeehive_EditionList'));
  69.       }
  70.     }
  71.     return $this->render('edition/new.html.twig', ['form' => $form->createView()]);
  72.   }
  73.   public function update(): Response {
  74.     $entityManager $this->getDoctrine()->getManager();
  75.     $repository $entityManager->getRepository(Edition::class);
  76.     $edition $repository->findOneBy(array('id' => $this->getParameter('id')));
  77.     
  78.     foreach(array('sort''title''remark''material') as $field){
  79.       if($value $this->getParameter($field)){
  80.         $setter 'set' ucfirst($field);
  81.         $getter 'get' ucfirst($field);
  82.         $edition->$setter($value);
  83.       }
  84.     }
  85.     $entityManager->flush();
  86.     return new Response($edition);
  87.   }
  88.   public function delete($id): Response {
  89.     $entityManager $this->getDoctrine()->getManager();
  90.     $repository $entityManager->getRepository(Edition::class);
  91.     $edition $repository->findOneBy(array('id' => $id));
  92.     $entityManager->remove($edition);
  93.     $entityManager->flush();
  94.     return $this->redirect($this->generateUrl('PapyrillioBeehive_EditionList'));
  95.   }
  96.   public function show($id): Response {
  97.     if(!$id){
  98.       return $this->forward('PapyrillioBeehiveBundle:Edition:list');
  99.     }
  100.     
  101.     $entityManager $this->getDoctrine()->getManager();
  102.     $repository $entityManager->getRepository(Edition::class);
  103.     $edition $repository->findOneBy(array('id' => $id));
  104.     return $this->render('edition/show.html.twig', ['edition' => $edition]);
  105.   }
  106. }