示例#1
1
 /**
  * {@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;
     };
 }
示例#2
0
 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;
     };
 }
示例#3
0
 /**
  * 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;
     };
 }
示例#6
0
 /**
  * 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;
     };
 }
示例#7
0
 /**
  * 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;
 }
示例#9
0
 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;
     });
 }
示例#10
0
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
示例#11
0
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());
示例#12
0
/*************************************************************
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();
示例#13
0
 /**
  * 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;
};
示例#15
0
 */
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
示例#16
0
$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) {