public function injectContainer() { $container = $this->slim->getContainer(); // Register component on container // inject config $container["config_folder"] = $this->configFolder; $container["config"] = function (ContainerInterface $container) { $files = scandir($container["config_folder"]); $configs = []; foreach ($files as $item) { $path = $container["config_folder"] . "/" . $item; if (is_file($path)) { $name = basename($path, ".php"); $configs[$name] = (include $path); } } return $configs; }; // injection aura/session $container["session"] = function (ContainerInterface $container) { $session_factory = new SessionFactory(); return $session_factory->newInstance($_COOKIE); }; // injection twig-view template engine $container["view"] = function (ContainerInterface $container) { // get aura session add global to twig-view $session = $container["session"]; $segment = $session->getSegment("login"); // new instance twig-view $view = new \Slim\Views\Twig($container["config"]["twig"]["templates"], []); $view->getEnvironment()->addGlobal('login', $segment); // add extension slim $view->addExtension(new \Slim\Views\TwigExtension($container["router"], $container["request"]->getUri())); $view->addExtension(new \Twig_Extension_Debug()); return $view; }; // injection medoo database libary $container["medoo"] = function (ContainerInterface $container) { return new \medoo($container["config"]["medoo"]); }; // ser xml resourcePath XMLService::setResourcePath($container->config["config"]["resource_path"] . "/resource/"); }
<?php // Fetch DI Container $container = $app->getContainer(); // Register Twig View helper $container['view'] = function ($c) { $view = new \Slim\Views\Twig(__DIR__ . '/../templates/', ['debug' => true]); // Instantiate and add Slim specific extension $view->addExtension(new Slim\Views\TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new Twig_Extension_Debug()); $view->addExtension(new App\Utilities\TwigExtension($c['flash'])); $view->getEnvironment()->addGlobal('menu', require __DIR__ . '/menu.php'); $view->getEnvironment()->addGlobal('messages', $c->flash->getMessages()); $view->getEnvironment()->addGlobal('identity', $c->get('authenticator')->getIdentity()); $view->getEnvironment()->addGlobal('base_url', $c->base_url); return $view; }; // flash message $container['flash'] = function () { return new \Slim\Flash\Messages(); }; //Add Global variables in twig //$twig_environment = $container['view']->getEnvironment(); $container['errorHandler'] = function ($c) use($app) { return function ($request, $response, $exception) use($c) { //var_dump(get_class($exception)); $status = 403; $message = ''; switch (get_class($exception)) { case 'Illuminate\\Database\\QueryException': $status = 500;
<?php // DIC configuration $container = $app->getContainer(); // ----------------------------------------------------------------------------- // Service providers // ----------------------------------------------------------------------------- // Twig $view = new \Slim\Views\Twig($app->settings['view']['template_path'], $app->settings['view']['twig']); $view->addExtension(new Twig_Extension_Debug()); $view->addExtension(new \Slim\Views\TwigExtension($app->router, $app->request->getUri())); /** @var \Twig_Environment $env */ $env = $view->getEnvironment(); foreach ($app->settings['view']['globals'] as $global => $value) { $env->addGlobal($global, $value); } $container->register($view); // Flash messages $container->register(new \Slim\Flash\Messages()); // ----------------------------------------------------------------------------- // Service factories // ----------------------------------------------------------------------------- // monolog $container['logger'] = function ($c) { $settings = $c['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; }; // -----------------------------------------------------------------------------
use App\Core; use App\Core\Catalog; // Core::$app = $app; // DIC configuration $container = $app->getContainer(); // ----------------------------------------------------------------------------- // Service providers // ----------------------------------------------------------------------------- // Twig $container['view'] = function ($c) { $settings = $c->get('settings'); $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']); // Add extensions $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri())); $view->addExtension(new Twig_Extension_Debug()); $view->getEnvironment()->addFunction(new Twig_SimpleFunction('get_title', function ($catalog_id) { return Catalog::get_title($catalog_id); })); $view->getEnvironment()->addFilter(new Twig_SimpleFilter('plural', function ($endings, $number) { $cases = [2, 0, 1, 1, 1, 2]; $n = $number; return sprintf($endings[$n % 100 > 4 && $n % 100 < 20 ? 2 : $cases[min($n % 10, 5)]], $n); })); return $view; }; // Flash messages $container['flash'] = function ($c) { return new \Slim\Flash\Messages(); }; // ----------------------------------------------------------------------------- // Service factories
$container['auth'] = function ($container) { return new \Glued\Classes\Auth\Auth($container); }; // view renderer using the twig template engine $container['view'] = function ($container) { // define $view, set the path to the twig templates, turn off caching for development $view = new \Slim\Views\Twig(__DIR__ . '/Views', ['cache' => false]); // allow to generate different urls to our views $view->addExtension(new \Slim\Views\TwigExtension($container->router, $container->request->getUri())); // this is here so that we can use (i.e. see views/templates/partials/navigation.twig) // {{ auth.check }}, as set in classes/Auth/Auth.php, inside our templates. // NOTE: $container['auth'] closure must be before this view closure. // NOTE: we cant use $view->getEnvironment()->addGlobal('auth', $container->auth); // as this would do a sql query everytime we access the global // TODO: possibly change this into middleware later? $view->getEnvironment()->addGlobal('auth', ['check' => $container->auth->check(), 'user' => $container->auth->user()]); $view->getEnvironment()->addGlobal('flash', $container->flash); return $view; }; // database (pure mysqli) $container['mysqli'] = function ($container) { $db = $container['settings']['db']; $mysqli = new mysqli($db['host'], $db['username'], $db['password'], $db['database']); $mysqli->set_charset($db['charset']); $mysqli->query("SET collation_connection = " . $db['collation']); return $mysqli; }; // database (joshcam/PHP-MySQLi-Database-Class) $container['db'] = function ($container) { $mysqli = $container->get('mysqli'); $db = new \MysqliDb($mysqli);
// ----------------------------------------------------------------------------- // Service providers // ----------------------------------------------------------------------------- // Twig $container['view'] = function ($c) { $settings = $c->get('settings'); $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']); // Add extensions $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri())); $view->addExtension(new Twig_Extension_Debug()); $view->addExtension(new \App\Libs\TwigExtension()); $categories = $c->get('redis')->get('category'); if ($categories) { $categories = json_decode($categories); } $view->getEnvironment()->addGlobal('__cates', $categories); return $view; }; $container['redis'] = function ($c) { $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $cate = $c->get('em')->getRepository('App\\Model\\Categories')->findBy([], ['id' => 'ASC']); foreach ($cate as $item) { $categories[] = ['id' => $item->getId(), 'title' => $item->getTitle(), 'slug' => $item->getSlug(), 'is_Parent' => $item->getIsParent(), 'parent' => $item->getParent()]; } $redis->delete('category'); $redis->set('category', json_encode($categories)); return $redis; }; // Flash messages $container['flash'] = function ($c) {
}; $container["mailchimp"] = function ($container) { return new MailChimp\MailChimp(); }; // Twig as template engine $container['view'] = function ($container) { $view = new \Slim\Views\Twig('app/views', ['cache' => false]); $view->addExtension(new \Slim\Views\TwigExtension($container['router'], $container['request']->getUri())); function compare_date($a, $b) { return strcmp($a['date'], $b['date']); } $eventsSort = $container["events"]; // sort alphabetically by name uasort($eventsSort, 'compare_date'); $view->getEnvironment()->addGlobal('menu', $container["menu"]->getMenu()); $view->getEnvironment()->addGlobal('events', $eventsSort); // print_r($eventsSort); return $view; }; // Go ahead and get the mailchimp groups to display $container['mailChimpGroups'] = function ($container) { // We know the list id and the categiry id so lets use it return $container['mailchimp']->request("GET", "/lists/bc9233b42a/interest-categories/35d7d5aa39/interests"); }; //Override the default Not Found Handler $container['notFoundHandler'] = function ($container) { return function ($request, $response) use($container) { return $container['view']->render($response, '404.twig', []); }; };
return $c['response']->withStatus(500) ->withHeader('Content-Type', 'text/html') ->write('Something went wrong!'); }; };*/ /** * Register Twig View Helper with some view configs * * @return \Twig */ $c['view'] = function ($c) { $view = new \Slim\Views\Twig(__DIR__ . '/views', ['cache' => false]); // Instantiate and add Slim specific extension $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $c['request']->getUri())); $view->addExtension(new \Katanium\Extensions\MyTwigExtension()); $twig = $view->getEnvironment(); // Configure view lexer $lexer = new Twig_Lexer($twig, array('tag_comment' => array('{#', '#}'), 'tag_block' => array('{%', '%}'), 'tag_variable' => array('{{$', '}}'), 'interpolation' => array('#{', '}'))); $twig->setLexer($lexer); return $view; }; /** * Register Hash library * * @return \Hash */ $c['hash'] = function ($c) { return new Hash($c->get('myConfig')); }; /** * Register RandomLib library
$translator->addResource('yaml', $f, $lingua); } return $translator; }; // Twig $container['view'] = function ($c) { $config = $c->get('config'); $settings = $c->get('settings'); $tema = $config['tema']; $view = new Slim\Views\Twig($settings['view']['template_path'] . DS . $tema, $settings['view']['twig']); // Add extensions $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri())); $view->addExtension(new Twig_Extension_Debug()); $view->addExtension(new TranslationExtension($c->get('translator'))); $config = $c->get('config'); $view->getEnvironment()->addGlobal('config', $config); return $view; }; // CSRF Guard $container['csrf'] = function ($c) { $guard = new Slim\Csrf\Guard(); $guard->setFailureCallable(function ($request, $response, $next) { $newResponse = $response->withHeader('Content-type', 'application/json'); return $newResponse->write(json_encode(['status' => false, 'msg' => 'CSRF Failed. Reload page.'])); }); return $guard; }; // ----------------------------------------------------------------------------- // Service factories // ----------------------------------------------------------------------------- // monolog
<?php use Slim\Container; $container['session'] = function (Container $c) { return new Pamit\Core\Storage\SessionStorage(); }; $container['flash'] = function (Container $c) { return new Slim\Flash\Messages(); }; $container['view'] = function (Container $c) use($settings) { $settings = $c->get('settings'); $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']); $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri())); $view->getEnvironment()->addGlobal('flash', $c['flash']); $view->getEnvironment()->addGlobal('session', $c['session']->all()); $view->addExtension(new Twig_Extension_Debug()); return $view; }; $container['db'] = function (Container $c) use($settings) { return new PDO('' . $settings['db']['driver'] . ': host=' . $settings['db']['host'] . '; dbname=' . $settings['db']['dbname'], $settings['db']['user'], $settings['db']['password']); }; $container['logger'] = function (Container $c) use($settings) { $settings = $c->get('settings'); $logger = new \Monolog\Logger($settings['logger']['name']); $logger->pushProcessor(new \Monolog\Processor\UidProcessor()); $logger->pushHandler(new \Monolog\Handler\StreamHandler($settings['logger']['path'], \Monolog\Logger::DEBUG)); return $logger; }; $container['validator'] = function (Container $c) use($settings) {
$guard->setFailureCallable(function ($request, $response, $next) { $request = $request->withAttribute("csrf_status", false); return $next($request, $response); }); return $guard; }; //Twig View $container['view'] = function ($c) { $settings = $c->get('settings')['view']; $view = new \Slim\Views\Twig($settings['path'], ['cache' => false, 'debug' => true]); $view->addExtension(new Twig_Extension_Debug()); $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $c['request']->getUri())); $asset = new Twig_SimpleFunction('asset', function ($path) use($c) { return $c['request']->getUri()->getBaseUrl() . '/' . $path; }); $view->getEnvironment()->addFunction($asset); return $view; }; //validator $container['validator'] = function ($c) { $request = $c->get('request')->getParsedBody(); return new Valitron\Validator($request); }; //Flash $container['flash'] = function () { return new \Slim\Flash\Messages(); }; //Auth $container['auth'] = function ($c) { return new App\Auth\Auth(); };
// ----------------------------------------------------------------------------- // Service providers // ----------------------------------------------------------------------------- // Twig $container['view'] = function ($c) { $settings = $c->get('settings'); $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']); // Add extensions $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri())); $view->addExtension(new Twig_Extension_Debug()); $view->addExtension(new \App\Libs\TwigExtension()); $categories = $c->get('redis')->get('category'); if ($categories) { $categories = json_decode($categories); } $view->getEnvironment()->addGlobal('__cates', $categories); $view->getEnvironment()->addGlobal('__user', $_SESSION['user']); return $view; }; $container['redis'] = function ($c) { $redis = new Redis(); if (!$redis->connect('127.0.0.1', 6379)) { $c->get('logger')->error('Redis is not running!'); echo 'Redis is not running!'; die; } $cate = $c->get('em')->getRepository('App\\Model\\Categories')->findBy([], ['id' => 'ASC']); foreach ($cate as $item) { $categories[] = ['id' => $item->getId(), 'title' => $item->getTitle(), 'slug' => $item->getSlug(), 'is_Parent' => $item->getIsParent(), 'parent' => $item->getParent()]; } $redis->delete('category');
<?php use Slim\Container; $container['flash'] = function (Container $c) { return new Slim\Flash\Messages(); }; $container['view'] = function (Container $c) use($settings) { $settings = $c->get('settings'); $view = new \Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']); $view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri())); $view->getEnvironment()->addGlobal('flash', $c['flash']); $view->addExtension(new Twig_Extension_Debug()); return $view; }; $container['db'] = function (Container $c) use($settings) { return new PDO('' . $settings['db']['driver'] . ': host=' . $settings['db']['host'] . '; dbname=' . $settings['db']['dbname'], $settings['db']['user'], $settings['db']['password']); }; $container['logger'] = function (Container $c) use($settings) { $settings = $c->get('settings'); $logger = new \Monolog\Logger($settings['logger']['name']); $logger->pushProcessor(new \Monolog\Processor\UidProcessor()); $logger->pushHandler(new \Monolog\Handler\StreamHandler($settings['logger']['path'], \Monolog\Logger::DEBUG)); return $logger; }; $container['validator'] = function (Container $c) use($settings) { $params = $c['request']->getParams(); $lang = $settings['lang']; return new Valitron\Validator($params, [], $lang['default']); };