/** * {@inheritDoc} */ public function register(Container $container) { // Append custom settings with missing params from default settings $container['settings']['view'] = self::mergeWithDefaultSettings($container['settings']['view']); /** * Add dependency (DI). * * @param Container $c * * @return Twig */ $container['view'] = function (Container $c) { $settings = $c['settings']['view']; $path = rtrim($settings['path'], '/') . '/'; $view = new Twig($path, $settings['options']); $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new \Twig_Extension_Debug()); // Add extensions (must be loaded via e. g. composer) foreach ($settings['extensions'] as $extension) { $extension = is_callable($extension) ? $extension() : new $extension(); $view->addExtension($extension); } return $view; }; }
public function registerDi() { $this->container['view'] = function ($c) { $view = new Twig(APP_PATH . 'templates'); // Instantiate and add Slim specific extension $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new \Twig_Extension_Debug()); return $view; }; }
/** * Register Twig Service Provider * * @param Container $container */ public function register(Container $container) { $config = $this->getConfig($container->get('settings')); $container['view'] = function (Container $container) use($config) { $engine = new Twig($config['template_path'], $config['twig']); // Add extensions $engine->addExtension(new TwigExtension($container->get('router'), $container->get('request')->getUri())); $engine->addExtension(new \Twig_Extension_Debug()); return $engine; }; }
public function register(ContainerInterface $container) { $config = $this->getConfig(); $container['view'] = function ($container) use($config) { $view = new Twig($config['template_path'], $config['twig']); // Add extensions $view->addExtension(new TwigExtension($container['router'], $container['request']->getUri())); $view->addExtension(new \Twig_Extension_Debug()); return $view; }; }
public function register(Container $c) { $c['view'] = function ($c) { $view = new Twig(__DIR__ . '/../../templates/view', ['cache' => __DIR__ . '/../../var/cache', 'autoreload' => true, 'debug' => true]); $view->getEnvironment()->addGlobal('flash', $c['flash']); $view->getEnvironment()->addGlobal('session', $_SESSION); $view->getEnvironment()->addGlobal('current_uri', $c['request']->getUri()->getPath()); $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new Twig_Extension_Debug()); return $view; }; }
/** * Register DI container in slim framework */ public function registerDi() { $this->container['flash'] = function () { return new Messages(); }; $this->container['view'] = function ($c) { $view = new Twig($c->config['view']['template_path'], $c->config['view']['twig']); // Instantiate and add Slim specific extension $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new \Twig_Extension_Debug()); return $view; }; }
/** * Register twig view in Slim container * * @return Shiniwork $this */ protected function registerView() { $container = $this->getContainer(); $settings = $container->get('settings'); if (!empty($settings['view']) && !empty($settings['view']['twig'])) { $container['view'] = function ($c) { $view = new Twig($c->getRootPath() . trim($c->settings['view']['template_path'], '/'), $c->settings['view']['twig']); $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new \Twig_Extension_Debug()); return $view; }; } return $this; }
public function __invoke(ContainerInterface $ci) { $settings = $ci->get('settings'); $view = new Twig($settings['twig']['view_path'], $settings['twig']['settings']); $view->addExtension(new TwigExtension($ci['router'], $ci['request']->getUri())); return $view; }
private function registerTwig() { $this->registerService('Twig', function ($container) { $view = new Twig(__DIR__ . '/../views', ['cache' => false]); $view->addExtension(new TwigExtension($container->get('router'), $container->get('request')->getUri())); return $view; }); }
use Slim\Views\Twig; use Slim\Views\TwigExtension; use Noodlehaus\Config; use Mailgun\Mailgun; // Autoload our stuff >:D require '../vendor/autoload.php'; // Create new container $container = new Container(['settings' => ['displayErrorDetails' => true]]); // load our configuration $container['config'] = function ($c) { return new Config('../app/config/production.php'); }; // setup our views $container['view'] = function ($c) { $view = new Twig('../app/views'); $view->addExtension(new TwigExtension($c['router'], $c['config']->get('url'))); return $view; }; // connect to the database $container['db'] = function ($c) { $db = new PDO('mysql:host=' . $c['config']->get('db.mysql.host') . ';dbname=' . $c['config']->get('db.mysql.dbname'), $c['config']->get('db.mysql.username'), $c['config']->get('db.mysql.password')); //$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $db; }; // add mail to the app $container['mail'] = function ($c) { return new Mailgun($c['config']->get('services.mailgun.secret')); }; // initialize our application $app = new App($container); // include our routes
use Monolog\Handler\StreamHandler; use Monolog\Logger; use Monolog\Processor\UidProcessor; use Slim\Flash\Messages; use Slim\Views\Twig; use Slim\Views\TwigExtension; $container = $app->getContainer(); // ----------------------------------------------------------------------------- // Service providers // ----------------------------------------------------------------------------- // Twig $container['view'] = function (ContainerInterface $c) { $settings = $c->get('settings'); $view = new Twig($settings['view']['template_path'], $settings['view']['twig']); // Add extensions $view->addExtension(new TwigExtension($c->get('router'), $c->get('request')->getUri())); $view->addExtension(new Twig_Extension_Debug()); return $view; }; // Flash messages $container['flash'] = function () { return new Messages(); }; // ----------------------------------------------------------------------------- // Service factories // ----------------------------------------------------------------------------- // Monolog $container['logger'] = function (ContainerInterface $c) { $settings = $c->get('settings'); $logger = new Logger($settings['logger']['name']); $logger->pushProcessor(new UidProcessor());
/************************************************************* FRONT CONTROLLER (SLIM 3 FRAMEWORK + TWIG TEMPLATE ENGINE) *************************************************************/ // autoload vendor classes require ROOT . '/vendor/autoload.php'; use Slim\App; use Slim\Container; use Slim\Views\Twig; use Slim\Views\TwigExtension; // default error handler for now, should use a custom error handler $config = ['settings' => ['displayErrorDetails' => true]]; // create dependency injection container $container = new Container($config); // configure database connection $container['db'] = function () { return new PDO('mysql:host=79.170.44.110;dbname=cl26-dataadmin', 'cl26-dataadmin', 'pi550ff'); }; // register Twig view helper and configure it $container['view'] = function ($c) { $view = new Twig(ROOT . '/app/views/'); $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new Twig_Extension_Debug()); $view->parserOptions = ['debug' => true]; return $view; }; // instantiate app class $app = new App($container); // application routes require 'routes.php'; // run app $app->run();
/** * Register the singletons used in the application */ protected function registerServices() { // register the app as a singleton self::$instance = $this; static::openLog('app.main'); // Get container $container = $this->getContainer(); $config = $this->config; // Register component on container $container['view'] = function ($container) { $view = new Twig(VIEWS_DIR, ['cache' => CACHE_DIR . '/views', 'auto_reload' => $this->debug]); $view->addExtension(new TwigExtension($container['router'], $container['request']->getUri())); return $view; }; $container['elasticsearch'] = function ($container) use($config) { if (!empty($config['elasticsearch_user']) && !empty($config['elasticsearch_pass'])) { $host = sprintf('http://%s:%s@%s:%d', $config['elasticsearch_user'], $config['elasticsearch_pass'], $config['elasticsearch_host'], $config['elasticsearch_port']); } else { $host = sprintf('http://%s:%s', $config['elasticsearch_host'], $config['elasticsearch_port']); } // limit the hosts to one since we access it from a ELB $client = ClientBuilder::create()->setHosts([$host])->build(); if (!Util::checkHostAvailability($config['elasticsearch_host'], $config['elasticsearch_port'])) { throw new \Exception('The Elasticsearch cluster seems to be unavailable.'); } return $client; }; /** * @return Config */ $container['config'] = function () use($config) { return $config; }; }
// form factory $container['form_factory'] = function (Container $c) { return Forms::createFormFactory(); }; // monolog $container['logger'] = function (Container $c) { $settings = $c->get('settings')['logger']; $logger = new Logger($settings['name']); $logger->pushProcessor(new UidProcessor()); $logger->pushHandler(new StreamHandler($settings['path'], Logger::DEBUG)); return $logger; }; // view $container['view'] = function (Container $c) { $settings = $c->get('settings')['view']; // symfony form: get the path to the default layout $extension = new \ReflectionClass('Symfony\\Bridge\\Twig\\Extension\\FormExtension'); $path = dirname($extension->getFileName()) . '/../Resources/views/Form'; // symfony form: add the path $paths = [$settings['template_path'], $path]; $view = new Twig($paths, ['auto_reload' => $settings['auto_reload'], 'cache' => $settings['cache_path'], 'strict_variables' => $settings['strict_variables'], 'debug' => $settings['debug']]); $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri())); // symfony form: add the themes $themes = ['bootstrap_3_layout.html.twig', 'field/form.html.twig']; // symfony form: add the form extensions $renderer = new TwigRenderer(new TwigRendererEngine($themes)); $view->addExtension(new FormExtension($renderer)); $view->addExtension(new TranslationExtension(new Translator('', new MessageSelector()))); $view->addExtension(new Twig_Extension_Debug()); return $view; };
*/ use App\Controller; use Slim\Views\Twig; use Slim\Flash\Messages; use Slim\Views\TwigExtension; // Get app container $container = $app->getContainer(); // Register flash message on container $container['flash'] = function () { return new Messages(); }; // Register twig view on container $container['view'] = function ($container) { $settings = $container->get('settings')['renderer']; $view = new Twig($settings['template_path'], ['cache' => $settings['cache_path']]); $view->addExtension(new TwigExtension($container['router'], $container['request']->getUri())); $theme = $container->get('settings')['theme']['name']; $view->getEnvironment()->addGlobal('theme', $theme); if ($_SERVER['SERVER_PORT'] == '443') { $assetPath = 'https://' . $_SERVER['HTTP_HOST']; } else { $assetPath = 'http://' . $_SERVER['HTTP_HOST']; } $view->getEnvironment()->addGlobal('asset_path', $assetPath); if ($container['flash']->getMessages()) { $flash = ['message' => $container['flash']->getMessages()['message'][0], 'alert_type' => $container['flash']->getMessages()['alert_type'][0]]; $view->getEnvironment()->addGlobal('flash', $flash); } return $view; }; // Register controller on container
$container['renderer'] = function ($c) { $settings = $c->get('settings')['renderer']; return new Slim\Views\PhpRenderer($settings['template_path']); }; // monolog $container['logger'] = function ($c) { $settings = $c->get('settings')['logger']; $logger = new Monolog\Logger($settings['name']); $logger->pushProcessor(new Monolog\Processor\UidProcessor()); $logger->pushHandler(new Monolog\Handler\StreamHandler($settings['path'], Monolog\Logger::DEBUG)); return $logger; }; // Register component on container $container['view'] = function ($container) { $view = new Twig(__DIR__ . '/../templates', ['debug' => true]); $view->addExtension(new \Slim\Views\TwigExtension($container['router'], $container['request']->getUri())); $view->addExtension(new \Twig_Extension_Debug()); return $view; }; $container['em'] = function ($container) { $config = $container['settings']['doctrine']; $metaConfig = call_user_func($config['metadata']['configCallable'], $config['metadata']['paths'], $config['metadata']['devMode']); return EntityManager::create($config['connection'], $metaConfig); }; $container[IndexRoute::class] = function ($container) { $em = $container['em']; $repository = $em->getRepository(Comment::class); $view = $container['view']; return new IndexRoute($view, $repository); }; $container[PostRoute::class] = function ($container) {