/** * Install database screen. * * @param Symfony\Component\HttpFoundation\Request $request * * @return Symfony\Component\HttpFoundation\Response */ public function databaseAction(Request $request) { $config = new YamlConfiguration(); if (false === $config->load()) { $config->setConfiguration($config->getDefaultConfiguration()); } $databaseForm = $this->buildDatabaseForm($request, $config); if ($databaseForm !== null) { $databaseForm->handleRequest($request); if ($databaseForm->isValid()) { try { $config->testDoctrineConnexion($databaseForm->getData()); $tempConf = $config->getConfiguration(); foreach ($databaseForm->getData() as $key => $value) { $tempConf['doctrine'][$key] = $value; } $config->setConfiguration($tempConf); /* * Test connexion */ try { $fixtures = new Fixtures($this->getService('em'), $request); $fixtures->createFolders(); $config->writeConfiguration(); /* * Need to clear configuration cache. */ $configurationClearer = new ConfigurationCacheClearer(); $configurationClearer->clear(); /* * Force redirect to avoid resending form when refreshing page */ return $this->redirect($this->generateUrl('installDatabaseSchemaPage')); } catch (\PDOException $e) { $message = ""; if (strstr($e->getMessage(), 'SQLSTATE[')) { preg_match('/SQLSTATE\\[(\\w+)\\] \\[(\\w+)\\] (.*)/', $e->getMessage(), $matches); $message = $matches[3]; } else { $message = $e->getMessage(); } $this->assignation['error'] = true; $this->assignation['errorMessage'] = ucfirst($message); } catch (\Exception $e) { $this->assignation['error'] = true; $this->assignation['errorMessage'] = $e->getMessage() . PHP_EOL . $e->getTraceAsString(); } } catch (\Exception $e) { $this->assignation['error'] = true; $this->assignation['errorMessage'] = $e->getMessage(); } } $this->assignation['databaseForm'] = $databaseForm->createView(); } return $this->render('steps/database.html.twig', $this->assignation); }