$app->register(new Silex\Provider\ServiceControllerServiceProvider()); // Register DoctrineServiceProvider service $app->register(new Silex\Provider\DoctrineServiceProvider(), $config); // Register DoctrineOrmServiceProvider service $app->register(new Dflydev\Silex\Provider\DoctrineOrm\DoctrineOrmServiceProvider(), $config); // Register theme service & set user theme $app['i18n_service'] = $app->share(function () { return new App\Service\I18nService(); }); // Register translation service $app->register(new Silex\Provider\TranslationServiceProvider(), array('locale_fallbacks' => array('en'), 'locale' => $app['i18n_service']->getLocale($config['locale']))); // Register the yaml translations $app['translator'] = $app->share($app->extend('translator', function (Silex\Translator $translator, $app) { $translator->addLoader('yaml', new Symfony\Component\Translation\Loader\YamlFileLoader()); foreach ($app['i18n_service']->getValidLocales() as $locale) { $translator->addResource('yaml', __DIR__ . '/locales/' . $locale . '.yml', $locale); } return $translator; })); // Register Credentials factory $app['credentials_factory'] = $app->share(function () { return new App\Factory\CredentialsFactory(); }); // Register Credentials service $app['credentials_service'] = $app->share(function () use($app, $config) { return new App\Service\CredentialsService($app['orm.em'], $app['credentials_factory'], $app['orm.em']->getRepository('App\\Entity\\Credentials'), $config); }); // Register default controller $app['app.default_controller'] = $app->share(function () use($app) { return new App\Controller\DefaultController($app, $app['twig'], $app['credentials_service']); });