public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('dbHostname', 'text', array('required' => true))->add('dbPort', 'text', array('required' => true))->add('dbDatabase', 'text', array('required' => true))->add('dbUsername', 'text', array('required' => true))->add('dbPassword', 'password');
// make sure the default data is set
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
$data = $event->getData();
$dbHostname = $data->getDbHostname();
if (empty($dbHostname) && isset($_SERVER['HTTP_HOST'])) {
// guess db & username
$host = $_SERVER['HTTP_HOST'];
$chunks = explode('.', $host);
// seems like windows can't handle localhost...
$data->setDbHostname(mb_substr(PHP_OS, 0, 3) == 'WIN' ? '127.0.0.1' : 'localhost');
// remove tld
array_pop($chunks);
// create base
$data->setDbDatabase(implode('_', $chunks));
$data->setDbUsername(implode('_', $chunks));
$event->setData($data);
}
});
}