src/Controller/TemplateController.php line 36
<?php
namespace App\Controller;
use App\Entity\Template;
use App\Form\TemplateType;
use App\Repository\TemplateRepository;
use App\Services\TemplateTools;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PropertyAccess\PropertyAccess;
use Symfony\Component\Routing\Annotation\Route;
use App\Controller\MainController;
use App\Controller\ParcoursController;
use App\Controller\ProfileController;
#[Route('/templates')]
class TemplateController extends AbstractController
{
#[Route('', name: 'app_template')]
public function templates(TemplateRepository $templateRepo): Response
{
return $this->render('template/liste.html.twig', [
'controller_name' => 'TemplateController',
'templates'=>$templateRepo->findAll()
]);
}
#[Route('/new', name: 'app_template_new')]
public function new(Request $request, EntityManagerInterface $entityManager, TemplateTools $templatetools): Response
{
$actions =$templatetools->getMethods();
$entitiesData =$templatetools->getEntities($entityManager);
$template = new Template();
$templateForm = $this->createForm(TemplateType::class, $template);
$templateForm->handleRequest($request);
if ($templateForm->isSubmitted() && $templateForm->isValid()) {
$data = $templateForm->get("data")->getData();
$template->setData(json_decode($data, true));
$entityManager->persist($template);
$entityManager->flush();
return $this->redirectToRoute("app_template_edit", [
"id"=>$template->getId()
]);
}
return $this->render('template/template.html.twig', [
'controller_name' => 'TemplateController',
'templateForm'=>$templateForm,
'template'=>$template,
'entitiesData'=>$entitiesData,
'actions'=>$actions
]);
}
#[Route('/edit/{id}', name: 'app_template_edit')]
public function edit(Template $template, EntityManagerInterface $entityManager, TemplateTools $templatetools ): Response
{
$actions =$templatetools->getMethods();
$entitiesData =$templatetools->getEntities($entityManager);
$templateForm = $this->createForm(TemplateType::class, $template);
$templateForm->get("data")->setData(json_encode($template->getData()));
return $this->render('template/template.html.twig', [
'controller_name' => 'TemplateController',
'templateForm'=>$templateForm,
'template'=>$template,
'entitiesData'=>$entitiesData,
'actions'=>$actions
]);
}
#[Route('/save', name: 'app_template_save')]
public function save(Request $request,TemplateRepository $templateRepo, EntityManagerInterface $entityManager ): Response
{
$templateId = $request->request->get("id");
$template = isset($templateId) ? $templateRepo->findOneBy(["id"=>$templateId]):new Template();
$templateForm = $this->createForm(TemplateType::class, $template);
$templateForm->handleRequest($request);
if ($templateForm->isValid()) {
$data = $templateForm->get("data")->getData();
$template->setData(json_decode($data, true));
$entityManager->persist($template);
$entityManager->flush();
return $this->json("OK");
}
else{
return $this->json("INVALID");
}
}
#[Route('/view/{id}', name: 'app_template_view')]
public function view(Template $template): Response
{
return $this->render('template/view.html.twig', [
'controller_name' => 'TemplateController',
'template'=>$template,
]);
}
#[Route('/action', name: 'app_template_action')]
public function action( Request $request, TemplateTools $templatetools): Response
{
$id = $request->request->get("id");
$method = $request->request->get("method");
$route = $templatetools->isRoute($method);
if($route !== false){
$typedAction = $templatetools->typedAction($method, $route);
if(isset($typedAction["url"]))
return $this->json([
"url"=>$this->generateUrl($typedAction["url"])
]);
return $this->redirectToRoute($route,[
"id"=>$id
]);
}
return $this->forward("App\\Controller\\$method",[
"id"=>$id
]);
}
#[Route('/open/{id}', name: 'app_template_open')]
public function open(Template $template, EntityManagerInterface $entityManager, TemplateTools $templatetools ): Response
{
$data= [
"a"=>"test A",
"b"=>"test B",
"template"=>$template,
"utilisateur"=>$this->getUser(),
];
$html =$templatetools->readParams($template, $data);
$formatedConditions =$templatetools->readConditions($template, $data);
return $this->render('template/view.html.twig', [
'controller_name' => 'TemplateController',
'template'=>$template,
'html'=>$html,
"formatedConditions"=>$formatedConditions
]);
}
public function use(Template $template, $data, TemplateTools $templatetools, $savedData=[], $mainId=0): Response
{
$data["template"]=$template;
$html =$templatetools->readParams($template, $data);
$formatedConditions =$templatetools->readConditions($template, $data);
return $this->render('template/view.html.twig', [
'controller_name' => 'TemplateController',
'template'=>$template,
'html'=>$html,
'savedData'=>$savedData,
"formatedConditions"=>$formatedConditions,
'mainId'=>$mainId
]);
}
public function useHtml(Template $template, $data, TemplateTools $templatetools): Response
{
$data["template"]=$template;
$html =$templatetools->readParams($template, $data);
$formatedConditions =$templatetools->readConditions($template, $data);
return $this->render('template/viewHtml.html.twig', [
'controller_name' => 'TemplateController',
'template'=>$template,
'html'=>$html,
"formatedConditions"=>$formatedConditions
]);
}
}