diff --git a/config/routes.yaml b/config/routes.yaml index 5fd332f7..97da2f00 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -35,20 +35,22 @@ role_rows: role_create: path: /roles/create - controller: App\Controller\RowController::create + controller: App\Controller\RoleController::create + methods: [GET] role_create_submit: path: /roles/create - controller: App\Controller\RowController::createSubmit - methods: [PUT] + controller: App\Controller\RoleController::createSubmit + methods: [POST] role_update: path: /roles/{id} - controller: App\Controller\RowController::update + controller: App\Controller\RoleController::update + methods: [GET] role_update_submit: path: /roles/{id} - controller: App\Controller\RowController::updateSubmit + controller: App\Controller\RoleController::updateSubmit methods: [POST] role_delete: @@ -61,7 +63,3 @@ role_delete: test_acl: path: /test_acl controller: App\Controller\TestController::index - -test_is_granted: - path: /test_is_granted - controller: App\Controller\TestController::testIsGranted diff --git a/src/Controller/RoleController.php b/src/Controller/RoleController.php index 3f195883..3749a079 100644 --- a/src/Controller/RoleController.php +++ b/src/Controller/RoleController.php @@ -6,6 +6,8 @@ use App\Ramcar\BaseController; use App\Entity\Role; use Doctrine\ORM\Query; +use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; class RoleController extends BaseController { @@ -21,6 +23,7 @@ class RoleController extends BaseController // get all rows $rows = $qb->getResult(Query::HYDRATE_ARRAY); + // response return $this->render('role/list.html.twig', $params); } @@ -35,6 +38,13 @@ class RoleController extends BaseController // get all rows $rows = $qb->getResult(Query::HYDRATE_ARRAY); + // add crud urls + foreach ($rows as $index => $row) { + $rows[$index]['update_url'] = $this->generateUrl('role_update', ['id' => $row['id']]); + $rows[$index]['delete_url'] = $this->generateUrl('role_delete', ['id' => $row['id']]); + } + + // response return $this->json(['data' => $rows]); } @@ -42,12 +52,31 @@ class RoleController extends BaseController { $params = $this->initParameters('role_list'); + // response return $this->render('role/form.html.twig', $params); } - public function createSubmit() + public function createSubmit(Request $req) { + // create new row + $em = $this->getDoctrine()->getManager(); + $row = new Role(); + // set and save values + $row->setID($req->request->get('id')) + ->setName($req->request->get('name')); + + $em->persist($row); + $em->flush(); + + // set success + $this->addFlash( + 'success', + 'Changes have been saved!' + ); + + // response + return $this->redirectToRoute('role_list'); } public function update($id) @@ -55,21 +84,42 @@ class RoleController extends BaseController $params = $this->initParameters('role_list'); // get row data - $repo = $this->getDoctrine()->getRepository(Role::class); - $row = $repo->find($id); + $em = $this->getDoctrine()->getManager(); + $row = $em->getRepository(Role::class)->find($id); - if (!empty($row)) { - $params['row'] = $row; - } else { + if (empty($row)) throw $this->createNotFoundException('The item does not exist'); - } + $params['row'] = $row; + $params['values'] = []; + + // response return $this->render('role/form.html.twig', $params); } - public function updateSubmit($id) + public function updateSubmit(Request $req, $id) { + // get row data + $em = $this->getDoctrine()->getManager(); + $row = $em->getRepository(Role::class)->find($id); + if (empty($row)) + throw $this->createNotFoundException('The item does not exist'); + + // set and save values + $row->setID($req->request->get('id')) + ->setName($req->request->get('name')); + + $em->flush(); + + // set success + $this->addFlash( + 'success', + 'Changes have been saved!' + ); + + // response + return $this->redirectToRoute('role_list'); } public function destroy($id) @@ -80,12 +130,16 @@ class RoleController extends BaseController $em = $this->getDoctrine()->getManager(); $row = $em->getRepository(Role::class)->find($id); - if (!empty($row)) { - // delete this row - $em->remove($row); - $em->flush(); - } else { + if (empty($row)) throw $this->createNotFoundException('The item does not exist'); - } + + // delete this row + $em->remove($row); + $em->flush(); + + // response + $response = new Response(); + $response->setStatusCode(Response::HTTP_OK); + $response->send(); } } diff --git a/templates/role/form.html.twig b/templates/role/form.html.twig new file mode 100644 index 00000000..903e1a38 --- /dev/null +++ b/templates/role/form.html.twig @@ -0,0 +1,79 @@ +{% extends 'base.html.twig' %} + +{% block body %} + +
+
+
+

Roles

+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + + +

+ {% if row is defined %} + Edit Role + {{ row.getId() }} + {% else %} + New Role + {% endif %} +

+
+
+
+
+
+
+
+ +
+ + {% if error.id is defined %} + + {% endif %} + Unique identifier for this role +
+
+
+ +
+ + {% if error.name is defined %} + + {% endif %} + Display name for this role +
+
+
+
+
+
+
+
+
+ + Cancel +
+
+
+
+
+
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/role/list.html.twig b/templates/role/list.html.twig index 658889ff..9a5cc19e 100644 --- a/templates/role/list.html.twig +++ b/templates/role/list.html.twig @@ -18,6 +18,12 @@
+ {% for message in app.flashes('success') %} + + {% endfor %}
@@ -33,7 +39,7 @@
- + New Role @@ -56,25 +62,6 @@ {% block scripts %} {% endblock %} \ No newline at end of file