ForkCMS\Bundle\InstallerBundle\Form\Type\DatabaseType::buildForm PHP Метод

buildForm() публичный Метод

public buildForm ( Symfony\Component\Form\FormBuilderInterface $builder, array $options )
$builder Symfony\Component\Form\FormBuilderInterface
$options array
    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);
            }
        });
    }