Much refactoring
This commit is contained in:
parent
5065bef545
commit
41d19ad84b
@ -4,6 +4,7 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\Brand;
|
use App\Entity\Brand;
|
||||||
use App\Form\BrandType;
|
use App\Form\BrandType;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
@ -25,75 +26,48 @@ class BrandController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/', name: 'brand_index', methods: ['GET'])]
|
#[Route('/', name: 'brand_index', methods: ['GET'])]
|
||||||
public function index(EntityManagerInterface $entityManager): Response
|
public function index(): Response
|
||||||
{
|
{
|
||||||
$brands = $entityManager
|
return $this->itemListView('brands', [
|
||||||
->getRepository(Brand::class)
|
|
||||||
->findBy([
|
|
||||||
|
|
||||||
], [
|
|
||||||
'name' => 'asc'
|
'name' => 'asc'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this->render('brand/index.html.twig', [
|
|
||||||
'brands' => $brands,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/new', name: 'brand_new', methods: ['GET', 'POST'])]
|
#[Route('/new', name: 'brand_new', methods: ['GET', 'POST'])]
|
||||||
public function new(Request $request, EntityManagerInterface $entityManager): Response
|
public function new(Request $request): Response
|
||||||
{
|
{
|
||||||
$brand = new Brand();
|
return $this->itemCreate($request, 'brand');
|
||||||
$form = $this->createForm(BrandType::class, $brand);
|
|
||||||
$form->handleRequest($request);
|
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
|
||||||
$entityManager->persist($brand);
|
|
||||||
$entityManager->flush();
|
|
||||||
|
|
||||||
return $this->redirectToRoute('brand_index', [], Response::HTTP_SEE_OTHER);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->renderForm('brand/new.html.twig', [
|
|
||||||
'brand' => $brand,
|
|
||||||
'form' => $form,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/{id}', name: 'brand_show', methods: ['GET'])]
|
#[Route('/{id}', name: 'brand_show', methods: ['GET'])]
|
||||||
public function show(Brand $brand): Response
|
public function show(Brand $brand): Response
|
||||||
{
|
{
|
||||||
return $this->render('brand/show.html.twig', [
|
return $this->itemView($brand, 'brand');
|
||||||
'brand' => $brand,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/{id}/edit', name: 'brand_edit', methods: ['GET', 'POST'])]
|
#[Route('/{id}/edit', name: 'brand_edit', methods: ['GET', 'POST'])]
|
||||||
public function edit(Request $request, Brand $brand, EntityManagerInterface $entityManager): Response
|
public function edit(Request $request, Brand $brand): Response
|
||||||
{
|
{
|
||||||
$form = $this->createForm(BrandType::class, $brand);
|
return $this->itemUpdate($request, $brand, 'brand');
|
||||||
$form->handleRequest($request);
|
//
|
||||||
|
// $form = $this->createForm(BrandType::class, $brand);
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
// $form->handleRequest($request);
|
||||||
$entityManager->flush();
|
//
|
||||||
|
// if ($form->isSubmitted() && $form->isValid()) {
|
||||||
return $this->redirectToRoute('brand_index', [], Response::HTTP_SEE_OTHER);
|
// $entityManager->flush();
|
||||||
}
|
//
|
||||||
|
// return $this->redirectToRoute('brand_index', [], Response::HTTP_SEE_OTHER);
|
||||||
return $this->renderForm('brand/edit.html.twig', [
|
// }
|
||||||
'brand' => $brand,
|
//
|
||||||
'form' => $form,
|
// return $this->renderForm('brand/edit.html.twig', [
|
||||||
]);
|
// 'brand' => $brand,
|
||||||
|
// 'form' => $form,
|
||||||
|
// ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/{id}', name: 'brand_delete', methods: ['POST'])]
|
#[Route('/{id}', name: 'brand_delete', methods: ['POST'])]
|
||||||
public function delete(Request $request, Brand $brand, EntityManagerInterface $entityManager): Response
|
public function delete(Request $request, Brand $brand): Response
|
||||||
{
|
{
|
||||||
if ($this->isCsrfTokenValid('delete'.$brand->getId(), $request->request->get('_token'))) {
|
return $this->deleteCSRF($request, $brand);
|
||||||
$entityManager->remove($brand);
|
|
||||||
$entityManager->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->redirectToRoute('brand_index', [], Response::HTTP_SEE_OTHER);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,8 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\Camera;
|
use App\Entity\Camera;
|
||||||
use App\Form\CameraType;
|
use App\Form\CameraType;
|
||||||
|
use App\Traits\DeleteFormTrait;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\ORMInvalidArgumentException;
|
use Doctrine\ORM\ORMInvalidArgumentException;
|
||||||
use LogicException;
|
use LogicException;
|
||||||
@ -19,6 +21,7 @@ use Symfony\Component\Routing\Annotation\Route;
|
|||||||
class CameraController extends AbstractController
|
class CameraController extends AbstractController
|
||||||
{
|
{
|
||||||
use FormControllerTrait;
|
use FormControllerTrait;
|
||||||
|
use DeleteFormTrait;
|
||||||
|
|
||||||
protected const ENTITY = Camera::class;
|
protected const ENTITY = Camera::class;
|
||||||
protected const TEMPLATE_PATH = 'camera/';
|
protected const TEMPLATE_PATH = 'camera/';
|
||||||
@ -66,7 +69,7 @@ class CameraController extends AbstractController
|
|||||||
#[Route(path: '/new', name: 'camera_new', methods: ['GET', 'POST'])]
|
#[Route(path: '/new', name: 'camera_new', methods: ['GET', 'POST'])]
|
||||||
public function newAction(Request $request): RedirectResponse|Response
|
public function newAction(Request $request): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemCreate($request, 'camera/new.html.twig', 'camera', 'camera_show');
|
return $this->itemCreate($request,'camera');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -75,7 +78,7 @@ class CameraController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'camera_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'camera_show', methods: ['GET'])]
|
||||||
public function showAction(Camera $camera): Response
|
public function showAction(Camera $camera): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($camera, 'camera/show.html.twig', 'camera');
|
return $this->itemView($camera,'camera');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,7 +89,7 @@ class CameraController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'camera_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'camera_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, Camera $camera): RedirectResponse|Response
|
public function editAction(Request $request, Camera $camera): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $camera, 'camera/edit.html.twig', 'camera', 'camera_show');
|
return $this->itemUpdate($request, $camera,'camera');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -94,10 +97,10 @@ class CameraController extends AbstractController
|
|||||||
*
|
*
|
||||||
* @throws LogicException
|
* @throws LogicException
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/{id}', name: 'camera_delete', methods: ['DELETE'])]
|
#[Route(path: '/{id}', name: 'camera_delete', methods: ['POST','DELETE'])]
|
||||||
public function deleteAction(Request $request, Camera $camera): RedirectResponse
|
public function deleteAction(Request $request, Camera $camera): RedirectResponse
|
||||||
{
|
{
|
||||||
return $this->itemDelete($request, $camera, 'camera_index');
|
return $this->itemDelete($request, $camera);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -112,18 +115,6 @@ class CameraController extends AbstractController
|
|||||||
return $this->itemDeacquire($request, $camera, 'previously-owned-camera_index');
|
return $this->itemDeacquire($request, $camera, 'previously-owned-camera_index');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a form to delete a camera entity.
|
|
||||||
*
|
|
||||||
* @param Camera $camera The camera entity
|
|
||||||
*
|
|
||||||
* @return FormInterface The form
|
|
||||||
*/
|
|
||||||
private function createDeleteForm(Camera $camera): FormInterface
|
|
||||||
{
|
|
||||||
return $this->buildForm($camera, 'camera_delete', 'DELETE');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a form to move
|
* Creates a form to move
|
||||||
*
|
*
|
||||||
|
@ -4,9 +4,10 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\CameraType;
|
use App\Entity\CameraType;
|
||||||
use App\Form\CameraTypeType;
|
use App\Form\CameraTypeType;
|
||||||
|
use App\Traits\DeleteFormTrait;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\FormInterface;
|
|
||||||
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
|
|
||||||
@ -14,6 +15,7 @@ use Symfony\Component\Routing\Annotation\Route;
|
|||||||
class CameraTypeController extends AbstractController
|
class CameraTypeController extends AbstractController
|
||||||
{
|
{
|
||||||
use FormControllerTrait;
|
use FormControllerTrait;
|
||||||
|
use DeleteFormTrait;
|
||||||
|
|
||||||
protected const ENTITY = CameraType::class;
|
protected const ENTITY = CameraType::class;
|
||||||
protected const TEMPLATE_PATH = 'cameratype/';
|
protected const TEMPLATE_PATH = 'cameratype/';
|
||||||
@ -30,7 +32,7 @@ class CameraTypeController extends AbstractController
|
|||||||
#[Route(path: '/', name: 'camera-type_index', methods: ['GET'])]
|
#[Route(path: '/', name: 'camera-type_index', methods: ['GET'])]
|
||||||
public function indexAction(): Response
|
public function indexAction(): Response
|
||||||
{
|
{
|
||||||
return $this->itemListView('cameratype/index.html.twig', 'cameraTypes', [
|
return $this->itemListView('cameraTypes', [
|
||||||
'type' => 'ASC',
|
'type' => 'ASC',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
@ -41,7 +43,7 @@ class CameraTypeController extends AbstractController
|
|||||||
#[Route(path: '/new', name: 'camera-type_new', methods: ['GET', 'POST'])]
|
#[Route(path: '/new', name: 'camera-type_new', methods: ['GET', 'POST'])]
|
||||||
public function newAction(Request $request): Response
|
public function newAction(Request $request): Response
|
||||||
{
|
{
|
||||||
return $this->itemCreate($request, 'cameratype/new.html.twig', 'cameraType', 'camera-type_show');
|
return $this->itemCreate($request, 'cameraType');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,7 +52,7 @@ class CameraTypeController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'camera-type_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'camera-type_show', methods: ['GET'])]
|
||||||
public function showAction(CameraType $cameraType): Response
|
public function showAction(CameraType $cameraType): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($cameraType, 'cameratype/show.html.twig', 'cameraType');
|
return $this->itemView($cameraType, 'cameraType');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,23 +61,15 @@ class CameraTypeController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'camera-type_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'camera-type_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, CameraType $cameraType): RedirectResponse|Response
|
public function editAction(Request $request, CameraType $cameraType): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $cameraType, 'cameratype/edit.html.twig', 'cameraType', 'camera-type_show');
|
return $this->itemUpdate($request, $cameraType, 'cameraType');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes a cameraType entity.
|
* Deletes a cameraType entity.
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/{id}', name: 'camera-type_delete', methods: ['DELETE'])]
|
#[Route(path: '/{id}', name: 'camera-type_delete', methods: ['POST', 'DELETE'])]
|
||||||
public function deleteAction(Request $request, CameraType $cameraType): RedirectResponse
|
public function deleteAction(Request $request, CameraType $cameraType): RedirectResponse
|
||||||
{
|
{
|
||||||
return $this->itemDelete($request, $cameraType, 'camera-type_index');
|
return $this->itemDelete($request, $cameraType);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a form to delete a cameraType entity.
|
|
||||||
*/
|
|
||||||
private function createDeleteForm(CameraType $cameraType): FormInterface
|
|
||||||
{
|
|
||||||
return $this->buildForm($cameraType, 'camera-type_delete', 'DELETE');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,12 +4,12 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\Film;
|
use App\Entity\Film;
|
||||||
use App\Form\FilmType;
|
use App\Form\FilmType;
|
||||||
|
use App\Traits\DeleteFormTrait;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\Common\Collections\Criteria;
|
use Doctrine\Common\Collections\Criteria;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
|
||||||
use LogicException;
|
use LogicException;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\FormInterface;
|
|
||||||
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
|
|
||||||
@ -20,6 +20,7 @@ use Symfony\Component\Routing\Annotation\Route;
|
|||||||
class FilmController extends AbstractController
|
class FilmController extends AbstractController
|
||||||
{
|
{
|
||||||
use FormControllerTrait;
|
use FormControllerTrait;
|
||||||
|
use DeleteFormTrait;
|
||||||
|
|
||||||
protected const ENTITY = Film::class;
|
protected const ENTITY = Film::class;
|
||||||
protected const TEMPLATE_PATH = 'film/';
|
protected const TEMPLATE_PATH = 'film/';
|
||||||
@ -66,7 +67,7 @@ class FilmController extends AbstractController
|
|||||||
#[Route(path: '/new', name: 'film_new', methods: ['GET', 'POST'])]
|
#[Route(path: '/new', name: 'film_new', methods: ['GET', 'POST'])]
|
||||||
public function newAction(Request $request): RedirectResponse|Response
|
public function newAction(Request $request): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemCreate($request, 'film/new.html.twig', 'film', 'film_show');
|
return $this->itemCreate($request, 'film');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -75,7 +76,7 @@ class FilmController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'film_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'film_show', methods: ['GET'])]
|
||||||
public function showAction(Film $film): Response
|
public function showAction(Film $film): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($film, 'film/show.html.twig', 'film');
|
return $this->itemView($film, 'film');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,7 +87,7 @@ class FilmController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'film_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'film_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, Film $film): RedirectResponse|Response
|
public function editAction(Request $request, Film $film): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $film, 'film/edit.html.twig', 'film', 'film_show');
|
return $this->itemUpdate($request, $film, 'film');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -94,17 +95,9 @@ class FilmController extends AbstractController
|
|||||||
*
|
*
|
||||||
* @throws LogicException
|
* @throws LogicException
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/{id}', name: 'film_delete', methods: ['DELETE'])]
|
#[Route(path: '/{id}', name: 'film_delete', methods: ['POST','DELETE'])]
|
||||||
public function deleteAction(Request $request, Film $film): RedirectResponse
|
public function deleteAction(Request $request, Film $film): RedirectResponse
|
||||||
{
|
{
|
||||||
return $this->itemDelete($request, $film, 'film_index');
|
return $this->itemDelete($request, $film);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a form to delete a film entity.
|
|
||||||
*/
|
|
||||||
private function createDeleteForm(Film $film): FormInterface
|
|
||||||
{
|
|
||||||
return $this->buildForm($film, 'film_delete', 'DELETE');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,9 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\Flash;
|
use App\Entity\Flash;
|
||||||
use App\Form\FlashType;
|
use App\Form\FlashType;
|
||||||
|
use App\Traits\DeleteFormTrait;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\FormInterface;
|
use Symfony\Component\Form\FormInterface;
|
||||||
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
||||||
@ -18,6 +19,7 @@ use Symfony\Component\Routing\Annotation\Route;
|
|||||||
class FlashController extends AbstractController
|
class FlashController extends AbstractController
|
||||||
{
|
{
|
||||||
use FormControllerTrait;
|
use FormControllerTrait;
|
||||||
|
use DeleteFormTrait;
|
||||||
|
|
||||||
protected const ENTITY = Flash::class;
|
protected const ENTITY = Flash::class;
|
||||||
protected const TEMPLATE_PATH = 'flash/';
|
protected const TEMPLATE_PATH = 'flash/';
|
||||||
@ -34,7 +36,7 @@ class FlashController extends AbstractController
|
|||||||
#[Route(path: '/', name: 'flash_index', methods: ['GET'])]
|
#[Route(path: '/', name: 'flash_index', methods: ['GET'])]
|
||||||
public function indexAction(): Response
|
public function indexAction(): Response
|
||||||
{
|
{
|
||||||
return $this->itemListView('flash/index.html.twig', 'flashes');
|
return $this->itemListView('flashes');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -43,7 +45,7 @@ class FlashController extends AbstractController
|
|||||||
#[Route(path: '/new', name: 'flash_new', methods: ['GET', 'POST'])]
|
#[Route(path: '/new', name: 'flash_new', methods: ['GET', 'POST'])]
|
||||||
public function newAction(Request $request): RedirectResponse|Response
|
public function newAction(Request $request): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemCreate($request, 'flash/new.html.twig', 'flash', 'flash_show');
|
return $this->itemCreate($request,'flash');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -52,7 +54,7 @@ class FlashController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'flash_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'flash_show', methods: ['GET'])]
|
||||||
public function showAction(Flash $flash): Response
|
public function showAction(Flash $flash): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($flash, 'flash/show.html.twig', 'flash');
|
return $this->itemView($flash,'flash');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -61,23 +63,15 @@ class FlashController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'flash_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'flash_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, Flash $flash): RedirectResponse|Response
|
public function editAction(Request $request, Flash $flash): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $flash, 'flash/edit.html.twig', 'flash', 'flash_show');
|
return $this->itemUpdate($request, $flash, 'flash');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes a flash entity.
|
* Deletes a flash entity.
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/{id}', name: 'flash_delete', methods: ['DELETE'])]
|
#[Route(path: '/{id}', name: 'flash_delete', methods: ['POST', 'DELETE'])]
|
||||||
public function deleteAction(Request $request, Flash $flash): RedirectResponse
|
public function deleteAction(Request $request, Flash $flash): RedirectResponse
|
||||||
{
|
{
|
||||||
return $this->itemDelete($request, $flash, 'flash_index');
|
return $this->itemDelete($request, $flash);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a form to delete a flash entity.
|
|
||||||
*/
|
|
||||||
private function createDeleteForm(Flash $flash): FormInterface
|
|
||||||
{
|
|
||||||
return $this->buildForm($flash, 'flash_delete', 'DELETE');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\GpuCore;
|
use App\Entity\GpuCore;
|
||||||
use App\Form\GPUCoreType;
|
use App\Form\GPUCoreType;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
@ -13,67 +14,44 @@ use Symfony\Component\Routing\Annotation\Route;
|
|||||||
#[Route('/gpu-core')]
|
#[Route('/gpu-core')]
|
||||||
class GpuCoreController extends AbstractController
|
class GpuCoreController extends AbstractController
|
||||||
{
|
{
|
||||||
#[Route('/', name: 'gpu-core_index', methods: ['GET'])]
|
use FormControllerTrait;
|
||||||
public function index(EntityManagerInterface $entityManager): Response
|
|
||||||
|
protected const ENTITY = GpuCore::class;
|
||||||
|
protected const TEMPLATE_PATH = 'gpu_core/';
|
||||||
|
protected const ROUTE_PREFIX = 'gpu-core_';
|
||||||
|
protected const FORM = GPUCoreType::class;
|
||||||
|
|
||||||
|
public function __construct(private readonly EntityManagerInterface $entityManager)
|
||||||
{
|
{
|
||||||
$gPUCores = $entityManager
|
}
|
||||||
->getRepository(GpuCore::class)
|
|
||||||
->findBy([], [
|
#[Route('/', name: 'gpu-core_index', methods: ['GET'])]
|
||||||
|
public function index(): Response
|
||||||
|
{
|
||||||
|
return $this->indexView('gpu_cores', [
|
||||||
'brand' => 'asc',
|
'brand' => 'asc',
|
||||||
'architecture' => 'asc',
|
'architecture' => 'asc',
|
||||||
'name' => 'asc',
|
'name' => 'asc',
|
||||||
'variant' => 'asc',
|
'variant' => 'asc',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $this->render('gpu_core/index.html.twig', [
|
|
||||||
'gpu_cores' => $gPUCores,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/new', name: 'gpu-core_new', methods: ['GET', 'POST'])]
|
#[Route('/new', name: 'gpu-core_new', methods: ['GET', 'POST'])]
|
||||||
public function new(Request $request, EntityManagerInterface $entityManager): Response
|
public function new(Request $request): Response
|
||||||
{
|
{
|
||||||
$gPUCore = new GpuCore();
|
return $this->itemCreate($request, 'gpu_core');
|
||||||
$form = $this->createForm(GPUCoreType::class, $gPUCore);
|
|
||||||
$form->handleRequest($request);
|
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
|
||||||
$entityManager->persist($gPUCore);
|
|
||||||
$entityManager->flush();
|
|
||||||
|
|
||||||
return $this->redirectToRoute('gpu-core_index', [], Response::HTTP_SEE_OTHER);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->renderForm('gpu_core/new.html.twig', [
|
|
||||||
'gpu_core' => $gPUCore,
|
|
||||||
'form' => $form,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/{id}', name: 'gpu-core_show', methods: ['GET'])]
|
#[Route('/{id}', name: 'gpu-core_show', methods: ['GET'])]
|
||||||
public function show(GpuCore $gPUCore): Response
|
public function show(GpuCore $gPUCore): Response
|
||||||
{
|
{
|
||||||
return $this->render('gpu_core/show.html.twig', [
|
return $this->itemView($gPUCore, 'gpu_core');
|
||||||
'gpu_core' => $gPUCore,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/{id}/edit', name: 'gpu-core_edit', methods: ['GET', 'POST'])]
|
#[Route('/{id}/edit', name: 'gpu-core_edit', methods: ['GET', 'POST'])]
|
||||||
public function edit(Request $request, GpuCore $gPUCore, EntityManagerInterface $entityManager): Response
|
public function edit(Request $request, GpuCore $gPUCore): Response
|
||||||
{
|
{
|
||||||
$form = $this->createForm(GPUCoreType::class, $gPUCore);
|
return $this->itemUpdate($request, $gPUCore, 'gpu_core');
|
||||||
$form->handleRequest($request);
|
|
||||||
|
|
||||||
if ($form->isSubmitted() && $form->isValid()) {
|
|
||||||
$entityManager->flush();
|
|
||||||
|
|
||||||
return $this->redirectToRoute('gpu-core_index', [], Response::HTTP_SEE_OTHER);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $this->renderForm('gpu_core/edit.html.twig', [
|
|
||||||
'gpu_core' => $gPUCore,
|
|
||||||
'form' => $form,
|
|
||||||
]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[Route('/{id}', name: 'gpu-core_delete', methods: ['POST'])]
|
#[Route('/{id}', name: 'gpu-core_delete', methods: ['POST'])]
|
||||||
|
@ -4,8 +4,9 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\Lenses;
|
use App\Entity\Lenses;
|
||||||
use App\Form\LensesType;
|
use App\Form\LensesType;
|
||||||
|
use App\Traits\DeleteFormTrait;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\Persistence\ManagerRegistry;
|
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\Form\FormInterface;
|
use Symfony\Component\Form\FormInterface;
|
||||||
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
||||||
@ -18,6 +19,7 @@ use Symfony\Component\Routing\Annotation\Route;
|
|||||||
class LensesController extends AbstractController
|
class LensesController extends AbstractController
|
||||||
{
|
{
|
||||||
use FormControllerTrait;
|
use FormControllerTrait;
|
||||||
|
use DeleteFormTrait;
|
||||||
|
|
||||||
protected const ENTITY = Lenses::class;
|
protected const ENTITY = Lenses::class;
|
||||||
protected const TEMPLATE_PATH = 'lenses/';
|
protected const TEMPLATE_PATH = 'lenses/';
|
||||||
@ -65,7 +67,7 @@ class LensesController extends AbstractController
|
|||||||
#[Route(path: '/new', name: 'lens_new', methods: ['GET', 'POST'])]
|
#[Route(path: '/new', name: 'lens_new', methods: ['GET', 'POST'])]
|
||||||
public function newAction(Request $request): RedirectResponse|Response
|
public function newAction(Request $request): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemCreate($request, 'lenses/new.html.twig', 'lense', 'lens_show');
|
return $this->itemCreate($request,'lense');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,7 +76,7 @@ class LensesController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'lens_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'lens_show', methods: ['GET'])]
|
||||||
public function showAction(Lenses $lens): Response
|
public function showAction(Lenses $lens): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($lens, 'lenses/show.html.twig', 'lense');
|
return $this->itemView($lens, 'lense');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,7 +85,7 @@ class LensesController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'lens_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'lens_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, Lenses $lens): RedirectResponse|Response
|
public function editAction(Request $request, Lenses $lens): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $lens, 'lenses/edit.html.twig', 'lense', 'lens_show');
|
return $this->itemUpdate($request, $lens, 'lense');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -102,22 +104,10 @@ class LensesController extends AbstractController
|
|||||||
/**
|
/**
|
||||||
* Deletes a lens entity.
|
* Deletes a lens entity.
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/{id}', name: 'lens_delete', methods: ['DELETE'])]
|
#[Route(path: '/{id}', name: 'lens_delete', methods: ['POST','DELETE'])]
|
||||||
public function deleteAction(Request $request, Lenses $lens): RedirectResponse
|
public function deleteAction(Request $request, Lenses $lens): RedirectResponse
|
||||||
{
|
{
|
||||||
return $this->itemDelete($request, $lens, 'lens_index');
|
return $this->itemDelete($request, $lens);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a form to delete a lens entity.
|
|
||||||
*
|
|
||||||
* @param Lenses $lens The lens entity
|
|
||||||
*
|
|
||||||
* @return FormInterface The form
|
|
||||||
*/
|
|
||||||
private function createDeleteForm(Lenses $lens): FormInterface
|
|
||||||
{
|
|
||||||
return $this->buildForm($lens, 'lens_delete', 'DELETE');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\PreviouslyOwnedCamera;
|
use App\Entity\PreviouslyOwnedCamera;
|
||||||
use App\Form\PreviouslyOwnedCameraType;
|
use App\Form\PreviouslyOwnedCameraType;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\ORMInvalidArgumentException;
|
use Doctrine\ORM\ORMInvalidArgumentException;
|
||||||
use LogicException;
|
use LogicException;
|
||||||
@ -36,13 +37,13 @@ class PreviouslyOwnedCameraController extends AbstractController
|
|||||||
* @throws UnexpectedValueException
|
* @throws UnexpectedValueException
|
||||||
*/
|
*/
|
||||||
#[Route(path: '/', name: 'previously-owned-camera_index', methods: ['GET'])]
|
#[Route(path: '/', name: 'previously-owned-camera_index', methods: ['GET'])]
|
||||||
public function indexAction(EntityManagerInterface $entityManager): Response
|
public function indexAction(): Response
|
||||||
{
|
{
|
||||||
return $this->itemListView('previouslyownedcamera/index.html.twig', 'previouslyOwnedCameras', [
|
return $this->itemListView( 'previouslyOwnedCameras', [
|
||||||
'brand' => 'ASC',
|
'brand' => 'ASC',
|
||||||
'mount' => 'ASC',
|
'mount' => 'ASC',
|
||||||
'model' => 'ASC',
|
'model' => 'ASC',
|
||||||
], $entityManager);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -51,7 +52,7 @@ class PreviouslyOwnedCameraController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'previously-owned-camera_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'previously-owned-camera_show', methods: ['GET'])]
|
||||||
public function showAction(PreviouslyOwnedCamera $previouslyOwnedCamera): Response
|
public function showAction(PreviouslyOwnedCamera $previouslyOwnedCamera): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($previouslyOwnedCamera, 'previouslyownedcamera/show.html.twig', 'previouslyOwnedCamera');
|
return $this->itemView($previouslyOwnedCamera, 'previouslyOwnedCamera');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -62,7 +63,7 @@ class PreviouslyOwnedCameraController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'previously-owned-camera_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'previously-owned-camera_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, PreviouslyOwnedCamera $previouslyOwnedCamera): RedirectResponse|Response
|
public function editAction(Request $request, PreviouslyOwnedCamera $previouslyOwnedCamera): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $previouslyOwnedCamera, 'previouslyownedcamera/edit.html.twig', 'previouslyOwnedCamera', 'previously-owned-camera_show');
|
return $this->itemUpdate($request, $previouslyOwnedCamera, 'previouslyOwnedCamera');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\PreviouslyOwnedFlash;
|
use App\Entity\PreviouslyOwnedFlash;
|
||||||
use App\Form\PreviouslyOwnedFlashType;
|
use App\Form\PreviouslyOwnedFlashType;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
||||||
@ -32,7 +33,7 @@ class PreviouslyOwnedFlashController extends AbstractController
|
|||||||
#[Route(path: '/', name: 'previously-owned-flash_index', methods: ['GET'])]
|
#[Route(path: '/', name: 'previously-owned-flash_index', methods: ['GET'])]
|
||||||
public function indexAction(): Response
|
public function indexAction(): Response
|
||||||
{
|
{
|
||||||
return $this->itemListView('previouslyownedflash/index.html.twig', 'previouslyOwnedFlashes');
|
return $this->itemListView( 'previouslyOwnedFlashes');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,7 +42,7 @@ class PreviouslyOwnedFlashController extends AbstractController
|
|||||||
#[Route(path: '/new', name: 'previously-owned-flash_new', methods: ['GET', 'POST'])]
|
#[Route(path: '/new', name: 'previously-owned-flash_new', methods: ['GET', 'POST'])]
|
||||||
public function newAction(Request $request): RedirectResponse|Response
|
public function newAction(Request $request): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemCreate($request, 'previouslyownedflash/new.html.twig', 'previouslyOwnedFlash', 'previously-owned-flash_show');
|
return $this->itemCreate($request, 'previouslyOwnedFlash');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -50,7 +51,7 @@ class PreviouslyOwnedFlashController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'previously-owned-flash_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'previously-owned-flash_show', methods: ['GET'])]
|
||||||
public function showAction(PreviouslyOwnedFlash $previouslyOwnedFlash): Response
|
public function showAction(PreviouslyOwnedFlash $previouslyOwnedFlash): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($previouslyOwnedFlash, 'previouslyownedcamera/show.html.twig', 'previouslyOwnedFlash');
|
return $this->itemView($previouslyOwnedFlash, 'previouslyOwnedFlash');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -59,6 +60,6 @@ class PreviouslyOwnedFlashController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'previously-owned-flash_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'previously-owned-flash_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, PreviouslyOwnedFlash $previouslyOwnedFlash): RedirectResponse|Response
|
public function editAction(Request $request, PreviouslyOwnedFlash $previouslyOwnedFlash): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $previouslyOwnedFlash, 'previouslyownedflash/edit.html.twig', 'previouslyOwnedFlash', 'previously-owned-flash_show');
|
return $this->itemUpdate($request, $previouslyOwnedFlash, 'previouslyOwnedFlash');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ namespace App\Controller;
|
|||||||
|
|
||||||
use App\Entity\PreviouslyOwnedLenses;
|
use App\Entity\PreviouslyOwnedLenses;
|
||||||
use App\Form\PreviouslyOwnedLensesType;
|
use App\Form\PreviouslyOwnedLensesType;
|
||||||
|
use App\Traits\FormControllerTrait;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
use Symfony\Component\HttpFoundation\{RedirectResponse, Request, Response};
|
||||||
@ -29,7 +30,7 @@ class PreviouslyOwnedLensesController extends AbstractController
|
|||||||
#[Route(path: '/', name: 'previously-owned-lens_index', methods: ['GET'])]
|
#[Route(path: '/', name: 'previously-owned-lens_index', methods: ['GET'])]
|
||||||
public function indexAction(): Response
|
public function indexAction(): Response
|
||||||
{
|
{
|
||||||
return $this->itemListView('previouslyownedlenses/index.html.twig', 'previouslyOwnedLenses', [
|
return $this->itemListView('previouslyOwnedLenses', [
|
||||||
'brand' => 'ASC',
|
'brand' => 'ASC',
|
||||||
'productLine' => 'ASC',
|
'productLine' => 'ASC',
|
||||||
'mount' => 'ASC',
|
'mount' => 'ASC',
|
||||||
@ -44,7 +45,7 @@ class PreviouslyOwnedLensesController extends AbstractController
|
|||||||
#[Route(path: '/{id}', name: 'previously-owned-lens_show', methods: ['GET'])]
|
#[Route(path: '/{id}', name: 'previously-owned-lens_show', methods: ['GET'])]
|
||||||
public function showAction(PreviouslyOwnedLenses $previouslyOwnedLens): Response
|
public function showAction(PreviouslyOwnedLenses $previouslyOwnedLens): Response
|
||||||
{
|
{
|
||||||
return $this->itemView($previouslyOwnedLens, 'previouslyownedlenses/show.html.twig', 'previouslyOwnedLense');
|
return $this->itemView($previouslyOwnedLens, 'previouslyOwnedLense');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -53,6 +54,6 @@ class PreviouslyOwnedLensesController extends AbstractController
|
|||||||
#[Route(path: '/{id}/edit', name: 'previously-owned-lens_edit', methods: ['GET', 'POST'])]
|
#[Route(path: '/{id}/edit', name: 'previously-owned-lens_edit', methods: ['GET', 'POST'])]
|
||||||
public function editAction(Request $request, PreviouslyOwnedLenses $previouslyOwnedLens): RedirectResponse|Response
|
public function editAction(Request $request, PreviouslyOwnedLenses $previouslyOwnedLens): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
return $this->itemUpdate($request, $previouslyOwnedLens, 'previouslyownedlenses/edit.html.twig', 'previouslyOwnedLense', 'previously-owned-lens_show');
|
return $this->itemUpdate($request, $previouslyOwnedLens, 'previouslyOwnedLense');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -62,4 +62,14 @@ trait LensTrait
|
|||||||
|
|
||||||
#[ORM\Column(name: 'aperture_blades', type: 'smallint', nullable: TRUE)]
|
#[ORM\Column(name: 'aperture_blades', type: 'smallint', nullable: TRUE)]
|
||||||
private readonly ?int $apertureBlades;
|
private readonly ?int $apertureBlades;
|
||||||
|
|
||||||
|
public function __get(string $name): mixed
|
||||||
|
{
|
||||||
|
if (property_exists($this, $name))
|
||||||
|
{
|
||||||
|
return $this->$name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
48
src/Repository/AcquireRepository.php
Normal file
48
src/Repository/AcquireRepository.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Repository;
|
||||||
|
|
||||||
|
use Doctrine\ORM\{EntityRepository};
|
||||||
|
|
||||||
|
use ReflectionObject;
|
||||||
|
use Throwable;
|
||||||
|
|
||||||
|
|
||||||
|
abstract class AcquireRepository extends EntityRepository
|
||||||
|
{
|
||||||
|
abstract public function reacquire(mixed $currentRecord): void;
|
||||||
|
abstract public function deacquire(mixed $currentRecord): void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move a record from the table represented by $currentRecord
|
||||||
|
* into the table represented by $newRecord
|
||||||
|
*
|
||||||
|
* @param mixed $currentRecord
|
||||||
|
* @param mixed $newRecord
|
||||||
|
*/
|
||||||
|
protected function moveRecord(mixed $currentRecord, mixed $newRecord): void
|
||||||
|
{
|
||||||
|
$em = $this->getEntityManager();
|
||||||
|
|
||||||
|
$old = new ReflectionObject($currentRecord);
|
||||||
|
$new = new ReflectionObject($newRecord);
|
||||||
|
|
||||||
|
foreach ($old->getProperties() as $property) {
|
||||||
|
$propertyName = $property->getName();
|
||||||
|
if ($new->hasProperty($propertyName)) {
|
||||||
|
$newProperty = $new->getProperty($propertyName);
|
||||||
|
$newProperty->setAccessible(TRUE);
|
||||||
|
$property->setAccessible(TRUE);
|
||||||
|
$newProperty->setValue($newRecord, $property->getValue($currentRecord));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
$em->persist($newRecord);
|
||||||
|
$em->remove($currentRecord);
|
||||||
|
$em->flush();
|
||||||
|
} catch (Throwable) {
|
||||||
|
dump($newRecord);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,42 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace App\Repository;
|
|
||||||
|
|
||||||
use ReflectionObject;
|
|
||||||
use Throwable;
|
|
||||||
|
|
||||||
trait AcquireTrait
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Move a record from the table represented by $currentRecord
|
|
||||||
* into the table represented by $newRecord
|
|
||||||
*
|
|
||||||
* @param mixed $currentRecord
|
|
||||||
* @param mixed $newRecord
|
|
||||||
*/
|
|
||||||
protected function moveRecord($currentRecord, $newRecord): void
|
|
||||||
{
|
|
||||||
$em = $this->getEntityManager();
|
|
||||||
|
|
||||||
$old = new ReflectionObject($currentRecord);
|
|
||||||
$new = new ReflectionObject($newRecord);
|
|
||||||
|
|
||||||
foreach ($old->getProperties() as $property) {
|
|
||||||
$propertyName = $property->getName();
|
|
||||||
if ($new->hasProperty($propertyName)) {
|
|
||||||
$newProperty = $new->getProperty($propertyName);
|
|
||||||
$newProperty->setAccessible(TRUE);
|
|
||||||
$property->setAccessible(TRUE);
|
|
||||||
$newProperty->setValue($newRecord, $property->getValue($currentRecord));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
$em->persist($newRecord);
|
|
||||||
$em->remove($currentRecord);
|
|
||||||
$em->flush();
|
|
||||||
} catch (Throwable) {
|
|
||||||
dump($newRecord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -3,16 +3,14 @@
|
|||||||
namespace App\Repository;
|
namespace App\Repository;
|
||||||
|
|
||||||
use App\Entity\{Camera, PreviouslyOwnedCamera};
|
use App\Entity\{Camera, PreviouslyOwnedCamera};
|
||||||
use Doctrine\ORM\{EntityRepository, ORMInvalidArgumentException};
|
use Doctrine\ORM\{ORMInvalidArgumentException};
|
||||||
|
|
||||||
class CameraRepository extends EntityRepository
|
class CameraRepository extends AcquireRepository
|
||||||
{
|
{
|
||||||
use AcquireTrait;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws ORMInvalidArgumentException
|
* @throws ORMInvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function deacquire(Camera $currentRecord): void
|
public function deacquire(mixed $currentRecord): void
|
||||||
{
|
{
|
||||||
$currentRecord->setFormerlyOwned(TRUE)
|
$currentRecord->setFormerlyOwned(TRUE)
|
||||||
->setReceived(TRUE);
|
->setReceived(TRUE);
|
||||||
@ -23,7 +21,7 @@ class CameraRepository extends EntityRepository
|
|||||||
/**
|
/**
|
||||||
* @throws ORMInvalidArgumentException
|
* @throws ORMInvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function reacquire(PreviouslyOwnedCamera $currentRecord): void
|
public function reacquire(mixed $currentRecord): void
|
||||||
{
|
{
|
||||||
$currentRecord->setFormerlyOwned(FALSE);
|
$currentRecord->setFormerlyOwned(FALSE);
|
||||||
|
|
||||||
|
@ -3,16 +3,14 @@
|
|||||||
namespace App\Repository;
|
namespace App\Repository;
|
||||||
|
|
||||||
use App\Entity\{Flash, PreviouslyOwnedFlash};
|
use App\Entity\{Flash, PreviouslyOwnedFlash};
|
||||||
use Doctrine\ORM\{EntityRepository, ORMInvalidArgumentException};
|
use Doctrine\ORM\{ORMInvalidArgumentException};
|
||||||
|
|
||||||
class FlashRepository extends EntityRepository
|
class FlashRepository extends AcquireRepository
|
||||||
{
|
{
|
||||||
use AcquireTrait;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @throws ORMInvalidArgumentException
|
* @throws ORMInvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function deacquire(Flash $currentRecord): void
|
public function deacquire(mixed $currentRecord): void
|
||||||
{
|
{
|
||||||
$currentRecord->setFormerlyOwned(TRUE)
|
$currentRecord->setFormerlyOwned(TRUE)
|
||||||
->setReceived(TRUE);
|
->setReceived(TRUE);
|
||||||
@ -23,7 +21,7 @@ class FlashRepository extends EntityRepository
|
|||||||
/**
|
/**
|
||||||
* @throws ORMInvalidArgumentException
|
* @throws ORMInvalidArgumentException
|
||||||
*/
|
*/
|
||||||
public function reacquire(PreviouslyOwnedFlash $currentRecord): void
|
public function reacquire(mixed $currentRecord): void
|
||||||
{
|
{
|
||||||
$currentRecord->setFormerlyOwned(FALSE);
|
$currentRecord->setFormerlyOwned(FALSE);
|
||||||
|
|
||||||
|
@ -3,13 +3,10 @@
|
|||||||
namespace App\Repository;
|
namespace App\Repository;
|
||||||
|
|
||||||
use App\Entity\{Lenses, PreviouslyOwnedLenses};
|
use App\Entity\{Lenses, PreviouslyOwnedLenses};
|
||||||
use Doctrine\ORM\EntityRepository;
|
|
||||||
|
|
||||||
class LensesRepository extends EntityRepository
|
class LensesRepository extends AcquireRepository
|
||||||
{
|
{
|
||||||
use AcquireTrait;
|
public function deacquire(mixed $currentRecord): void
|
||||||
|
|
||||||
public function deacquire(Lenses $currentRecord): void
|
|
||||||
{
|
{
|
||||||
$currentRecord->setFormerlyOwned(TRUE)
|
$currentRecord->setFormerlyOwned(TRUE)
|
||||||
->setReceived(TRUE);
|
->setReceived(TRUE);
|
||||||
@ -17,7 +14,7 @@ class LensesRepository extends EntityRepository
|
|||||||
$this->moveRecord($currentRecord, new PreviouslyOwnedLenses());
|
$this->moveRecord($currentRecord, new PreviouslyOwnedLenses());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function reacquire(PreviouslyOwnedLenses $currentRecord): void
|
public function reacquire(mixed $currentRecord): void
|
||||||
{
|
{
|
||||||
$currentRecord->setFormerlyOwned(FALSE);
|
$currentRecord->setFormerlyOwned(FALSE);
|
||||||
|
|
||||||
|
16
src/Traits/DeleteFormTrait.php
Normal file
16
src/Traits/DeleteFormTrait.php
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Traits;
|
||||||
|
|
||||||
|
use Symfony\Component\Form\FormInterface;
|
||||||
|
|
||||||
|
trait DeleteFormTrait
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Creates a form to delete an entity.
|
||||||
|
*/
|
||||||
|
private function createDeleteForm(mixed $item): FormInterface
|
||||||
|
{
|
||||||
|
return $this->buildForm($item, self::ROUTE_PREFIX . 'delete', 'DELETE');
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php declare(strict_types=1);
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
namespace App\Controller;
|
namespace App\Traits;
|
||||||
|
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Component\Form\FormInterface;
|
use Symfony\Component\Form\FormInterface;
|
||||||
@ -12,10 +12,8 @@ trait FormControllerTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a form generator
|
* Create a form generator
|
||||||
*
|
|
||||||
* @param mixed $item
|
|
||||||
*/
|
*/
|
||||||
protected function buildForm($item, string $actionRoute, string $method = 'POST'): FormInterface
|
protected function buildForm(mixed $item, string $actionRoute, string $method = 'POST'): FormInterface
|
||||||
{
|
{
|
||||||
return $this->createFormBuilder()
|
return $this->createFormBuilder()
|
||||||
->setAction($this->generateUrl($actionRoute, ['id' => $item->getId()]))
|
->setAction($this->generateUrl($actionRoute, ['id' => $item->getId()]))
|
||||||
@ -26,8 +24,11 @@ trait FormControllerTrait
|
|||||||
/**
|
/**
|
||||||
* Show create form / create an item
|
* Show create form / create an item
|
||||||
*/
|
*/
|
||||||
protected function itemCreate(Request $request, string $template, string $templateKey, string $redirectRoute)
|
protected function itemCreate(Request $request, string $templateKey): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
|
$template = self::TEMPLATE_PATH . 'new.html.twig';
|
||||||
|
$redirectRoute = self::ROUTE_PREFIX . 'show';
|
||||||
|
|
||||||
$Entity = self::ENTITY;
|
$Entity = self::ENTITY;
|
||||||
$item = new $Entity();
|
$item = new $Entity();
|
||||||
$form = $this->createForm(self::FORM, $item);
|
$form = $this->createForm(self::FORM, $item);
|
||||||
@ -48,11 +49,18 @@ trait FormControllerTrait
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function indexView(string $templateKey, array $sort = []): Response
|
||||||
|
{
|
||||||
|
return $this->itemListView($templateKey, $sort);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List view for the data type
|
* List view for the data type
|
||||||
*/
|
*/
|
||||||
protected function itemListView(string $template, string $templateKey, array $sort = []): Response
|
protected function itemListView(string $templateKey, array $sort = []): Response
|
||||||
{
|
{
|
||||||
|
$template = self::TEMPLATE_PATH . 'index.html.twig';
|
||||||
|
|
||||||
$items = $this->entityManager->getRepository(self::ENTITY)->findBy([], $sort);
|
$items = $this->entityManager->getRepository(self::ENTITY)->findBy([], $sort);
|
||||||
|
|
||||||
return $this->render($template, [
|
return $this->render($template, [
|
||||||
@ -62,11 +70,11 @@ trait FormControllerTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* View details for a specific item
|
* View details for a specific item
|
||||||
*
|
|
||||||
* @param mixed $item
|
|
||||||
*/
|
*/
|
||||||
protected function itemView($item, string $template, string $templateKey): Response
|
protected function itemView(mixed $item, string $templateKey): Response
|
||||||
{
|
{
|
||||||
|
$template = self::TEMPLATE_PATH . 'show.html.twig';
|
||||||
|
|
||||||
$templateData = [
|
$templateData = [
|
||||||
$templateKey => $item,
|
$templateKey => $item,
|
||||||
];
|
];
|
||||||
@ -81,11 +89,12 @@ trait FormControllerTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Show edit form / update an item
|
* Show edit form / update an item
|
||||||
*
|
|
||||||
* @param mixed $item
|
|
||||||
*/
|
*/
|
||||||
protected function itemUpdate(Request $request, $item, string $template, string $templateKey, string $redirectRoute)
|
protected function itemUpdate(Request $request, mixed $item, string $templateKey): RedirectResponse|Response
|
||||||
{
|
{
|
||||||
|
$template = self::TEMPLATE_PATH . 'edit.html.twig';
|
||||||
|
$redirectRoute = self::ROUTE_PREFIX . 'show';
|
||||||
|
|
||||||
$editForm = $this->createForm(self::FORM, $item);
|
$editForm = $this->createForm(self::FORM, $item);
|
||||||
$editForm->handleRequest($request);
|
$editForm->handleRequest($request);
|
||||||
|
|
||||||
@ -123,10 +132,8 @@ trait FormControllerTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Move an item to a previously_owned table
|
* Move an item to a previously_owned table
|
||||||
*
|
|
||||||
* @param mixed $item
|
|
||||||
*/
|
*/
|
||||||
protected function itemDeacquire(Request $request, $item, string $redirectRoute): RedirectResponse
|
protected function itemDeacquire(Request $request, mixed $item, string $redirectRoute): RedirectResponse
|
||||||
{
|
{
|
||||||
$form = $this->createDeacquireForm($item);
|
$form = $this->createDeacquireForm($item);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
@ -139,10 +146,8 @@ trait FormControllerTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Move an item from a previously_owned table back to the original table
|
* Move an item from a previously_owned table back to the original table
|
||||||
*
|
|
||||||
* @param mixed $item
|
|
||||||
*/
|
*/
|
||||||
protected function itemReacquire(Request $request, $item, string $redirectRoute): RedirectResponse
|
protected function itemReacquire(Request $request, mixed $item, string $redirectRoute): RedirectResponse
|
||||||
{
|
{
|
||||||
$form = $this->createReacquireForm($item);
|
$form = $this->createReacquireForm($item);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
@ -155,17 +160,29 @@ trait FormControllerTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Actually delete an item
|
* Actually delete an item
|
||||||
*
|
|
||||||
* @param mixed $item
|
|
||||||
*/
|
*/
|
||||||
protected function itemDelete(Request $request, mixed $item, string $redirectRoute): RedirectResponse
|
protected function itemDelete(Request $request, mixed $item): RedirectResponse
|
||||||
{
|
{
|
||||||
|
$redirectRoute = self::ROUTE_PREFIX . 'index';
|
||||||
|
|
||||||
$form = $this->createDeleteForm($item);
|
$form = $this->createDeleteForm($item);
|
||||||
$form->handleRequest($request);
|
$form->handleRequest($request);
|
||||||
|
|
||||||
|
// if ($this->isCsrfTokenValid((string)$item->getId(), $request->request->get('_token'))) {
|
||||||
$this->entityManager->remove($item);
|
$this->entityManager->remove($item);
|
||||||
$this->entityManager->flush();
|
$this->entityManager->flush();
|
||||||
|
//}
|
||||||
|
|
||||||
return $this->redirectToRoute($redirectRoute);
|
return $this->redirectToRoute($redirectRoute, [], Response::HTTP_SEE_OTHER);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function deleteCSRF(Request $request, mixed $item): RedirectResponse
|
||||||
|
{
|
||||||
|
if ($this->isCsrfTokenValid('delete'.$item->getId(), $request->request->get('_token'))) {
|
||||||
|
$this->entityManager->remove($item);
|
||||||
|
$this->entityManager->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->redirectToRoute(self::ROUTE_PREFIX . 'index', [], Response::HTTP_SEE_OTHER);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -14,13 +14,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="large primary callout">
|
<div class="large primary callout">
|
||||||
{{ form_start(form) }}
|
{{ form_start(edit_form) }}
|
||||||
{{ form_widget(form) }}
|
{{ form_widget(edit_form) }}
|
||||||
<button
|
<button
|
||||||
type="submit"
|
type="submit"
|
||||||
class="success button expanded"
|
class="success button expanded"
|
||||||
>Update</button>
|
>Update</button>
|
||||||
{{ form_end(form) }}
|
{{ form_end(edit_form) }}
|
||||||
|
|
||||||
<form method="post" action="{{ path('brand_delete', {'id': brand.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
<form method="post" action="{{ path('brand_delete', {'id': brand.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
||||||
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ brand.id) }}">
|
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ brand.id) }}">
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
<form method="post" action="{{ path('gpu-core_delete', {'id': gpu_core.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
|
||||||
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ gpu_core.id) }}">
|
|
||||||
<button type="submit" class="alert button expanded">Delete</button>
|
|
||||||
</form>
|
|
@ -1,4 +0,0 @@
|
|||||||
{{ form_start(form) }}
|
|
||||||
{{ form_widget(form) }}
|
|
||||||
<button type="submit" class="success button expanded">{{ button_label|default('Save') }}</button>
|
|
||||||
{{ form_end(form) }}
|
|
@ -14,8 +14,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="large primary callout">
|
<div class="large primary callout">
|
||||||
{{ include('gpu_core/_form.html.twig', {'button_label': 'Update'}) }}
|
{{ form_start(edit_form) }}
|
||||||
|
{{ form_widget(edit_form) }}
|
||||||
|
<button type="submit" class="success button expanded">Update</button>
|
||||||
|
{{ form_end(edit_form) }}
|
||||||
|
|
||||||
{{ include('gpu_core/_delete_form.html.twig') }}
|
<form method="post" action="{{ path('gpu-core_delete', {'id': gpu_core.id}) }}" onsubmit="return confirm('Are you sure you want to delete this item?');">
|
||||||
|
<input type="hidden" name="_token" value="{{ csrf_token('delete' ~ gpu_core.id) }}">
|
||||||
|
<button type="submit" class="alert button expanded">Delete</button>
|
||||||
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -14,6 +14,9 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="large primary callout">
|
<div class="large primary callout">
|
||||||
{{ include('gpu_core/_form.html.twig') }}
|
{{ form_start(form) }}
|
||||||
|
{{ form_widget(form) }}
|
||||||
|
<button type="submit" class="success button expanded">{{ button_label|default('Save') }}</button>
|
||||||
|
{{ form_end(form) }}
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
Loading…
Reference in New Issue
Block a user