Umstrukturierung:
* CMS-Action-Methoden (also Seiten, die durch page-Eintrag repräsentiert werden) von DefaultController nach CmsController verschoben * Action-Methoden für Wiederverwendbare View-Komponenten (die Controller-Logik benötigen) von DefaultController nach ComponentController verschoben * CMS-Seiten-Templates in den Unterordner "cms" verschoben git-svn-id: http://78.47.251.156/svn/dev/sterntours-3@3302 f459cee4-fb09-11de-96c3-f9c5f16c3c76
This commit is contained in:
parent
4278e110fc
commit
bf69f20a50
12 changed files with 287 additions and 223 deletions
112
trunk/src/AppBundle/Controller/CmsController.php
Normal file
112
trunk/src/AppBundle/Controller/CmsController.php
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Ulrich Hecht <ulrich.hecht@hecht-software.de>
|
||||
* @date 02/22/2017
|
||||
*/
|
||||
|
||||
namespace AppBundle\Controller;
|
||||
|
||||
|
||||
use AppBundle\Entity\Page;
|
||||
use AppBundle\Form\TtSearchRequestType;
|
||||
use AppBundle\Listener\KernelControllerListener;
|
||||
use Doctrine\ORM\EntityManager;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
||||
|
||||
/**
|
||||
* Controller for CMS pages. CMS pages are represented by Page instances (i.e. entries of the page database table).
|
||||
* The template property of a Page object defines the action method below. If a travel program is assigned then the
|
||||
* travelProgramAction is used. If no template is specified, then the defaultAction is used.
|
||||
*
|
||||
* The view templates can be found pages/cms.
|
||||
*
|
||||
* Also see {@link KernelControllerListener}, which handles routing.
|
||||
*
|
||||
* @package AppBundle\Controller
|
||||
*/
|
||||
class CmsController extends Controller
|
||||
{
|
||||
/**
|
||||
* @return EntityManager
|
||||
*/
|
||||
private function getEntityManager()
|
||||
{
|
||||
return $this->getDoctrine()->getManager();
|
||||
}
|
||||
|
||||
public function defaultAction(Page $page)
|
||||
{
|
||||
return $this->render('default/pages/cms/default.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
]);
|
||||
}
|
||||
|
||||
public function overviewAction(Page $page)
|
||||
{
|
||||
return $this->render('default/pages/cms/overview.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
]);
|
||||
}
|
||||
|
||||
public function travelProgramOverviewAction(Page $page)
|
||||
{
|
||||
$childPages =
|
||||
$this->getEntityManager()->getRepository('AppBundle:Page')->getChildrenWithTravelProgramsAndDates($page);
|
||||
|
||||
$nonMediated = [];
|
||||
$mediated = [];
|
||||
foreach ($childPages as $childPage)
|
||||
{
|
||||
if ($childPage->getStatus() == 1 && $childPage->getTravelProgram() &&
|
||||
$childPage->getTravelProgram()->getIsMediated())
|
||||
{
|
||||
$mediated[] = $childPage;
|
||||
}
|
||||
else
|
||||
{
|
||||
$nonMediated[] = $childPage;
|
||||
}
|
||||
}
|
||||
// We only need a separation if there are mediated AND non mediated travel programs
|
||||
if (empty($nonMediated) && !empty($mediated))
|
||||
{
|
||||
$childPages = $mediated;
|
||||
}
|
||||
else
|
||||
{
|
||||
$childPages = $nonMediated;
|
||||
}
|
||||
|
||||
return $this->render('default/pages/cms/travelProgramOverview.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
'child_pages' => $childPages,
|
||||
'mediated_child_pages' => $mediated,
|
||||
]);
|
||||
}
|
||||
|
||||
public function traveltainmentAction(Page $page)
|
||||
{
|
||||
$form = $this->createForm(TtSearchRequestType::class);
|
||||
|
||||
return $this->render('default/pages/cms/traveltainment.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
'tt_search_form' => $form->createView(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function travelProgramAction(Page $page)
|
||||
{
|
||||
$this->getDoctrine()->getRepository('AppBundle:TravelPeriod')->getTrueTravelPeriods($page->getTravelProgram());
|
||||
|
||||
// replace this example code with whatever you need
|
||||
return $this->render('default/pages/cms/travelProgram.html.twig', [
|
||||
'base_dir' => realpath($this->getParameter('kernel.root_dir').'/..').DIRECTORY_SEPARATOR,
|
||||
'page' => $page,
|
||||
'travel_program' => $page->getTravelProgram()
|
||||
]);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue