diff --git a/src/Controllers/ComponentController.php b/src/Controllers/ComponentController.php index 05720a1..5604381 100644 --- a/src/Controllers/ComponentController.php +++ b/src/Controllers/ComponentController.php @@ -59,4 +59,31 @@ class ComponentController extends Controller { ->withStatus(302); } + public function getEdit(Request $request, Response $response, array $args): Response { + $component = Component::where('id', $args['component_id'])->first(); + + $view = Twig::fromRequest($request); + return $view->render($response, 'component/edit.twig', [ + 'component' => $component, + ]); + } + + public function postEdit(Request $request, Response $response, array $args): Response { + $component = Component::where('id', $args['component_id'])->first(); + + $params = (array)$request->getParsedBody(); + + $component->name = $params['component_name']; + $component->type = $params['component_type']; + + $component->save(); + + // redirect the user back to the home page + $routeContext = RouteContext::fromRequest($request); + $routeParser = $routeContext->getRouteParser(); + return $response + ->withHeader('Location', $routeParser->urlFor('component.view', ['component_id' => $component->id])) + ->withStatus(302); + } + } diff --git a/src/routes.php b/src/routes.php index 2ad3df7..8571b73 100644 --- a/src/routes.php +++ b/src/routes.php @@ -17,7 +17,13 @@ $app->group('/component', function(RouteCollectorProxy $group) { $group->get('/list', '\\BitGoblin\\Colossus\\Controllers\\ComponentController:getList')->setName('component.list'); $group->get('/add', '\\BitGoblin\\Colossus\\Controllers\\ComponentController:getAdd')->setName('component.add'); $group->post('/add', '\\BitGoblin\\Colossus\\Controllers\\ComponentController:postAdd'); - $group->get('/{component_id}', '\\BitGoblin\\Colossus\\Controllers\\ComponentController:getView')->setName('component.view'); + + $group->group('/{component_id}', function(RouteCollectorProxy $component) { + $component->get('', '\\BitGoblin\\Colossus\\Controllers\\ComponentController:getView')->setName('component.view'); + + $component->get('/edit', '\\BitGoblin\\Colossus\\Controllers\\ComponentController:getEdit')->setName('component.edit'); + $component->post('/edit', '\\BitGoblin\\Colossus\\Controllers\\ComponentController:postEdit'); + }); }); $app->group('/test', function(RouteCollectorProxy $group) { diff --git a/views/component/edit.twig b/views/component/edit.twig new file mode 100644 index 0000000..cf7bd1b --- /dev/null +++ b/views/component/edit.twig @@ -0,0 +1,40 @@ +{% extends 'layout.twig' %} + +{% block title %}Editing Component: {{ component.name }}{% endblock %} + +{% block content %} + +