/** * Router constructor. */ public function __construct() { $dispatcher = FastRoute\simpleDispatcher(function (FastRoute\RouteCollector $collector) { $collector->addRoute(['GET'], '/logout', [new \App\Controllers\AdminController(), 'logout']); $collector->addRoute(['GET', 'POST'], '/[{table}[/{action}[/{id}]]]', [new \App\Controllers\AdminController(), 'main']); }); $factory = new Abimo\Factory(); $request = $factory->request(); $method = $request->method(); $uri = $request->uri(); $route = $dispatcher->dispatch($method, $uri); switch ($route[0]) { case FastRoute\Dispatcher::NOT_FOUND: $response = $factory->response(); $response->header('404', true, 404)->send(); throw new \ErrorException("Route {$method} {$uri} not found."); break; case FastRoute\Dispatcher::METHOD_NOT_ALLOWED: $response = $factory->response(); $response->header('405', true, 405)->send(); throw new \ErrorException("Method {$method} not allowed."); break; case FastRoute\Dispatcher::FOUND: $handler = $route[1]; $arguments = $route[2]; call_user_func_array($handler, $arguments); } }
/** * @return void */ private function setData() { $data = null; if ($this->controller->action === 'add' || $this->controller->action === 'edit') { $this->managePlugins(); $data = $this->createUpdateRow(); } elseif ($this->controller->action === 'remove') { $data = $this->deleteRow(); } //TODO - if requested with non-ajax then redirect if (empty($_SERVER['HTTP_X_REQUESTED_WITH'])) { $response = $this->factory->response(); $router = new UrlModel(); $response->header('Location: ' . $router->admin($this->controller->table))->send(); } exit($data); }