public function registerRoute() { $this->app->get('/', function ($req, $res) { $res->getBody()->write("Please <a href=\"\\install-system\">install</a> system"); })->setName('home'); $this->app->get('/install-system', function ($req, $res, $args) { return $this->view->render($res, 'admin\\install.twig', ['step' => 1, 'view' => '1']); })->setName('installer'); $parentClass = $this; $this->app->post('/install-system', function ($req, $res, $args) use($parentClass) { $request = new RequestParams($req); $_allParams = $request->all(); unset($_allParams['step']); $allParams = array(); if ('finish' == $request->post('step')) { $parentClass->installSystem($_allParams); return $res->withStatus(301)->withHeader('Location', $this->router->pathFor('home')); } foreach ($_allParams as $k => $item) { if (is_array($item)) { foreach ($item as $_k => $_v) { $allParams[$k . "[{$_k}]"] = $_v; } } else { $allParams[$k] = $item; } } return $this->view->render($res, 'admin\\install.twig', ['prevData' => $allParams, 'step' => $request->post("step"), 'view' => $request->post("step")]); })->setName('installer-step'); $this->app->post('/install-system/checkdb', function ($req, $res, $args) { $request = new RequestParams($req); if ($request->isXhr()) { $checkdb = false; $config = []; if ($request->post('dbType') == 'mysql') { $config = ['driver' => 'mysql', 'host' => $request->post('dbHost'), 'database' => $request->post('dbName'), 'username' => $request->post('dbLogin'), 'password' => $request->post('dbPassword'), 'charset' => 'utf8', 'collation' => 'utf8_general_ci', 'prefix' => '']; $checkdb = true; } elseif ($request->post('dbType') == 'sqlite') { if (!$request->post('dbFileName')) { $data = array('type' => 'error', 'msg' => "Please insert DB name"); return $res->withJson($data); } $file = RESOURCE_PATH . 'database/' . strtolower($request->post('dbFileName')) . '.sqlite'; if (file_exists($file)) { $data = array('type' => 'error', 'msg' => "File exist, please insert other DB name"); } else { $data = array('type' => 'success', 'msg' => "Step the next stage"); $checkdb = false; } $config = ['driver' => 'sqlite', 'database' => $file, 'prefix' => '']; } if ($checkdb) { $capsule = new Capsule(); $capsule->addConnection($config); $capsule->setAsGlobal(); $capsule->bootEloquent(); try { $capsule->schema()->hasTable("options"); $data = array('type' => 'success', 'msg' => "Step the next stage"); } catch (\PDOException $e) { $data = array('type' => 'error', 'msg' => "DB not exist"); } } return $res->withJson($data); } else { $data = array('type' => 'error', 'msg' => "Request type error"); return $res->withJson($data); } }); }