예제 #1
1
 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/");
 }
예제 #2
1
<?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;
예제 #3
0
 public function bootTwig()
 {
     $this->debug('Booting Twig');
     $view = new \Slim\Views\Twig($this->settings['paths.view'], $this->settings['view.twig']);
     $view->addExtension(new \Twig_Extension_Debug());
     $view->addExtension(new \Slim\Views\TwigExtension($this->app->router, $this->app->request->getUri()));
     $this->getContainer()->register($view);
     return $view;
 }
예제 #4
0
 public function setupRenderer()
 {
     $container = $this->getContainer();
     $container['view'] = function ($c) {
         $view = new \Slim\Views\Twig(ROOT_DIR . '/resources/views', ['cache' => ROOT_DIR . '/resources/cache/twig', 'debug' => true, 'auto_reload' => true]);
         $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $c['request']->getUri()));
         $engine = new MarkdownEngine\MichelfMarkdownEngine();
         $view->addExtension(new MarkdownExtension($engine));
         return $view;
     };
 }
예제 #5
0
파일: index.php 프로젝트: paroxp/rafalp
/**
 * Define the view component.
 *
 * @param \Slim\Container $container
 * @return \Slim\Views\Twig
 */
function buildView(Slim\Container $container)
{
    $view = new \Slim\Views\Twig('assets', ['cache' => 'cache']);
    $view->getLoader()->addPath('./css');
    $view->addExtension(new \Slim\Views\TwigExtension($container['router'], $container['request']->getUri()));
    return $view;
}
예제 #6
0
 public function setUp()
 {
     $this->container = new Slim\Container();
     $this->container['settings']['app-middleware'] = [LoggerMiddleware::class];
     $this->container['settings']['routes'] = ['get' => ['/' => ["callable" => HelloWorldAction::class, "mw" => ["Test1", "Test2"], "name" => "Test1"], '/json' => ["callable" => HelloWorldJsonAction::class, "mw" => [], "name" => "Test2"]]];
     $this->container['twig'] = function ($c) {
         $view = new \Slim\Views\Twig("templates", ['cache' => false]);
         // Instantiate and add Slim specific extension
         $view->addExtension(new Slim\Views\TwigExtension($c['router'], $c['request']->getUri()));
         return $view;
     };
     $this->container["logger"] = function ($c) {
         $log = new Logger("Test");
         $log->pushHandler(new \Monolog\Handler\NullHandler());
         return $log;
     };
     $this->collective = new \Collective\Collective($this->container);
     $this->collective->addMw("Test1", function ($c) {
         return function ($req, $res, $next) {
             $res->write("Test1");
             return $next($req, $res);
         };
     });
     $this->collective->addMw("Test2", function ($c) {
         return function ($req, $res, $next) {
             $res = $next($req, $res);
             $res->write("Test2");
             return $res;
         };
     });
     $this->collective->applyMiddleware();
     $this->collective->applyRoutes();
 }
예제 #7
0
파일: App.php 프로젝트: i4j5/burgermaniya
 public static function instance()
 {
     if (self::$slim === null) {
         $configuration = ['settings' => ['displayErrorDetails' => true]];
         $c = new \Slim\Container($configuration);
         $app = new \Slim\App($c);
         $container = $app->getContainer();
         $container['view'] = function ($c) {
             $view = new \Slim\Views\Twig(DOCROOT . 'app/views', []);
             $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $c['request']->getUri()));
             return $view;
         };
         $container['flash'] = function () {
             return new \Slim\Flash\Messages();
         };
         self::$slim = $app;
     }
     return self::$slim;
 }
예제 #8
0
 function run()
 {
     $config = parse_ini_file('../.config');
     $this->setUpDb();
     $showErrors = isset($config['showErrors']) ? $config['showErrors'] : false;
     $configuration = ['settings' => ['displayErrorDetails' => $showErrors]];
     $c = new \Slim\Container($configuration);
     // create new Slim instance
     $app = new \Slim\App($c);
     // create new Slim instance
     //$app = new \Slim\App();
     $app->db = $this->database;
     $this->flashDB(false);
     $app->auth = false;
     $app->user = '';
     $app->register = $config['registerActive'];
     $app->add(function ($request, $response, $next) use(&$app) {
         if (isset($_SESSION['userID'])) {
             $app->auth = true;
             $app->user = $_SESSION['username'];
         }
         $response = $next($request, $response);
         return $response;
     });
     $container = $app->getContainer();
     $container['view'] = function ($c) {
         // templates location and a settings array
         $view = new \Slim\Views\Twig('../templates', ['cache' => '../cache', 'auto_reload' => true, 'debug' => true]);
         // Instantiate and add Slim specific extension
         $view->addExtension(new Slim\Views\TwigExtension($c['router'], $c['request']->getUri()));
         return $view;
     };
     $route = new Routes($app);
     $app = $route->run($app);
     $this->app = $app;
     // Run app
     $this->app->run();
 }
 /**
  * Example middleware invokable class
  *
  * @param  \Psr\Http\Message\ServerRequestInterface $request  PSR7 request
  * @param  \Psr\Http\Message\ResponseInterface      $response PSR7 response
  * @param  callable                                 $next     Next middleware
  *
  * @return \Psr\Http\Message\ResponseInterface
  */
 public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
 {
     $accept = $request->getHeader('Accept');
     if (in_array('application/json', $accept)) {
         $jsonHelpers = new JsonHelpers($this->app->getContainer());
         $jsonHelpers->registerResponseView();
         $jsonHelpers->registerErrorHandlers();
     } elseif (in_array('text/calendar', $accept)) {
         $container = $this->app->getContainer();
         $container['view'] = function ($c) {
             return new IcalendarRenderer();
         };
     } else {
         $container = $this->app->getContainer();
         $container['view'] = function ($container) {
             $config = $container['settings'];
             $tView = new \Slim\Views\Twig($config['renderer']['template_path'], ['cache' => $config['renderer']['cache_path']]);
             $tView->addExtension(new \Slim\Views\TwigExtension($container['router'], $container['request']->getUri()));
             $view = new TwigRenderer($tView);
             return $view;
         };
     }
     return $next($request, $response);
 }
예제 #10
0
 /**
  * Service Definitions
  */
 private function setupServices()
 {
     $container = $this->getContainer();
     $container['view'] = function ($c) {
         $view = new \Slim\Views\Twig($c['settings']['base_path'] . '/resources/templates');
         $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $c['request']->getUri()));
         return $view;
     };
     $container['db'] = function ($c) {
         $db = new ExtendedPdo('mysql:host=' . $c['settings']['db.host'] . ';dbname=' . $c['settings']['db.name'], $c['settings']['db.user'], $c['settings']['db.pass']);
         return $db;
     };
     $this->db = $container['db'];
     $container['query'] = function ($c) {
         $query = new QueryFactory('mysql');
         return $query;
     };
     $this->query = $container['query'];
 }
예제 #11
0
파일: index.php 프로젝트: jlaso/notify
<?php

require_once __DIR__ . "/../vendor/autoload.php";
use Slim\App;
use Slim\Container;
use Slim\Views\TwigExtension;
$configuration = ['settings' => ['displayErrorDetails' => true]];
$container = new Container($configuration);
// Register component on container
$container['view'] = function ($c) {
    $view = new \Slim\Views\Twig(__DIR__ . '/../src/Application/Templating', ['cache' => __DIR__ . '/../cache']);
    $view->addExtension(new TwigExtension($c['router'], $c['request']->getUri()));
    return $view;
};
$container['debug'] = true;
// Create app
$app = new App($container);
// Render Twig template in route
$app->get('/', function ($request, $response, $args) {
    return $this->view->render($response, 'home/index.html.twig');
})->setName('profile');
// Run app
$app->run();
예제 #12
0
<?php

// DIC configuration
$container = $app->getContainer();
// view renderer
$container['renderer'] = function ($c) {
    $settings = $c->get('settings')['renderer'];
    $view = new \Slim\Views\Twig($settings['template_path'], ['cache' => $settings['cache_path'], 'debug' => true]);
    $uri = $c['request']->getUri();
    $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $uri));
    $view->addExtension(new Twig_Extension_Debug());
    $view->offsetSet('user', $c['user']);
    $view->offsetSet('staticPath', $uri->getBaseUrl() . '/static/');
    return $view;
};
// 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;
};
// my db
$container['db'] = function ($c) {
    $settings = $c->get('settings')['db_config'];
    return \App\lib\MyDb::getInstance($settings['dsn'], $settings['user'], $settings['password'], $settings['debug']);
};
// model
$container['model'] = function ($c) {
    return new \App\lib\Loader($c);
예제 #13
0
// DIC configuration
$container = $app->getContainer();
// Logger
$container['logger'] = function ($c) {
    $config = $c->settings['Monolog'];
    $logger = new Monolog\Logger($config['loggerName']);
    $logger->pushProcessor(new Monolog\Processor\UidProcessor());
    $formatter = new Monolog\Formatter\LineFormatter();
    $formatter->includeStacktraces();
    if (true === $config['StreamHandler']['enable']) {
        $handler = new Monolog\Handler\StreamHandler(VAR_PATH . '/log/app-' . date('Y-m') . '.log', $config['StreamHandler']['logLevel']);
        $handler->setFormatter($formatter);
        $logger->pushHandler($handler);
    }
    if (true === $config['NativeMailerHandler']['enable'] && '' != $config['NativeMailerHandler']['to']) {
        $handler = new Monolog\Handler\NativeMailerHandler($config['NativeMailerHandler']['to'], $config['NativeMailerHandler']['subject'], $config['NativeMailerHandler']['from'], $config['NativeMailerHandler']['logLevel']);
        $handler->setFormatter($formatter);
        $logger->pushHandler($handler);
    }
    return $logger;
};
// View renderer
$container['renderer'] = function ($c) {
    $config = $c->settings['Twig'];
    $path = $config['templatesPath'];
    unset($config['templatesPath']);
    $twig = new Slim\Views\Twig($path, $config);
    $twig->addExtension(new Slim\Views\TwigExtension($c->router, $c->request->getUri()));
    $twig['config'] = $c->settings['App'];
    return $twig;
};
예제 #14
0
<?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;
};
// -----------------------------------------------------------------------------
예제 #15
0
파일: index.php 프로젝트: ryanp73/Eagle
<?php

session_start();
require_once 'vendor/autoload.php';
require_once './eagle/database/Connection.php';
$c = new \Slim\Container(include './eagle/config/config.php');
$app = new \Slim\App($c);
$container = $app->getContainer();
$container['view'] = function ($container) {
    $view = new \Slim\Views\Twig('./eagle/templates');
    $view->addExtension(new \Slim\Views\TwigExtension($container['router'], $container['request']->getUri()));
    return $view;
};
new Connection();
ini_set('max_execution_time', 60);
require_once './eagle/routes/team.routes.php';
require_once './eagle/routes/event.routes.php';
require_once './eagle/routes/comment.routes.php';
require_once './eagle/routes/scouting.routes.php';
require_once './eagle/routes/base.routes.php';
$app->run();
예제 #16
0
<?php

require_once dirname(dirname(__FILE__)) . '/vendor/autoload.php';
use Slim\App;
use Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware;
$app = new App(['settings' => ['debug' => true, 'whoops.editor' => 'sublime']]);
$app->add(new WhoopsMiddleware());
$container = $app->getContainer();
$container['view'] = function ($c) {
    $view = new \Slim\Views\Twig('./views', ['debug' => true, 'cache' => './cache/views']);
    $view->addExtension(new Twig_Extension_Debug());
    return $view;
};
// Work
// $app->get('/', function($request, $response, $args) use ($app) {
//     return $this->view->render($response, 'test.html', [
//         'name' => "Tester"
//     ]);
// });
// Exception
$app->get('/', function ($request, $response, $args) use($app) {
    return $this->view->render($response, 'noExists.html');
});
$app->run();
예제 #17
0
<?php

// DIC configuration
$container = $app->getContainer();
// Database
$container['capsule'] = function ($c) {
    $capsule = new Illuminate\Database\Capsule\Manager();
    $capsule->addConnection($c['settings']['db']);
    return $capsule;
};
// View
$container['view'] = function ($c) {
    $view = new \Slim\Views\Twig($c['settings']['view']['template_path'], $c['settings']['view']['twig']);
    // Add extensions
    $view->addExtension(new Slim\Views\TwigExtension($c['router'], $c['request']->getUri()));
    $view->addExtension(new Twig_Extension_Debug());
    $view->addExtension(new Bookshelf\TwigExtension($c['flash']));
    return $view;
};
// CSRF guard
$container['csrf'] = function ($c) {
    $guard = new \Slim\Csrf\Guard();
    $guard->setFailureCallable(function ($request, $response, $next) {
        $request = $request->withAttribute("csrf_status", false);
        return $next($request, $response);
    });
    return $guard;
};
// Flash messages
$container['flash'] = function ($c) {
    return new \Slim\Flash\Messages();
예제 #18
0
<?php

$container = new \Slim\Container(require 'settings.php');
$container['slugify'] = function () {
    return new Cocur\Slugify\Slugify();
};
$container['view'] = function ($container) {
    $view = new \Slim\Views\Twig('../templates', ['cache' => '../cache']);
    $flashMessages = $container->flash->getMessages();
    $view['flash'] = $flashMessages;
    $view['form'] = isset($flashMessages['form']) ? $flashMessages['form'][0] : null;
    $view['user'] = $container->user;
    $view->addExtension(new Slim\Views\TwigExtension($container->router, $container->request->getUri()));
    $view->addExtension(new Cocur\Slugify\Bridge\Twig\SlugifyExtension($container->slugify));
    return $view;
};
$container['db'] = function ($container) {
    $config = $container->settings['database'];
    return new \Tablak\Database('pgsql:dbname=tablak', $config['username'], $config['password']);
};
$container['tabRepository'] = function ($container) {
    return new \Tablak\Repositories\TabRepository($container->db, $container->userRepository);
};
$container['songRepository'] = function ($container) {
    return new \Tablak\Repositories\SongRepository($container->db);
};
$container['artistRepository'] = function ($container) {
    return new \Tablak\Repositories\ArtistRepository($container->db);
};
$container['userRepository'] = function ($container) {
    return new \Tablak\Repositories\UserRepository($container->db);
예제 #19
0
/*$c['errorHandler'] = function ($c) {
  return function ($request, $response, $exception) use ($c) {
    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'));
};
예제 #20
0
<?php

use Core\Service\ErrorHandler;
use Core\Util\ArrayUtil;
$container = $app->getContainer();
$container['view'] = function ($c) {
    /** @var \Core\Service\Config $config */
    $config = \Core\Service\Config::getInstance();
    $view_config = $config->get('view');
    $view = new \Slim\Views\Twig($view_config['template_path'], $view_config);
    #region Add extensions
    if (ArrayUtil::hasKey('extension', $view_config)) {
        $extension = $view_config['extension'];
        foreach ($extension as $extension_class) {
            $view->addExtension(new $extension_class());
        }
    }
    #endregion
    return $view;
};
$container['notFoundHandler'] = function ($c) {
    /**
     * @param \Slim\Http\Request $request
     * @param \Slim\Http\Response $response
     * @return $response
     */
    return function ($request, $response) use($c) {
        /** @var \Slim\Container $c */
        $view = $c->get('view');
        $view->render($response, '404.twig');
        return $response->withStatus(404);
예제 #21
0
/**
 * set Twig parser options
 *
 * @param \Interop\Container\ContainerInterface $c
 *
 * @return \Slim\Views\Twig
 */
$container['view'] = function ($c) {
    /** @var \Slim\Http\Request $request */
    $request = $c['request'];
    /** @var \Slim\Router $router */
    $router = $c['router'];
    $view = new \Slim\Views\Twig($c->get('settings')['twig_templates_path'], ['cache' => $c->get('settings')['twig_templates_cache_path'], 'debug' => $c->get('settings')['twig_debug']]);
    // Instantiate and add Slim specific extension
    $basePath = rtrim(str_ireplace('index.php', '', $request->getUri()->getBasePath()), '/');
    $view->addExtension(new Slim\Views\TwigExtension($router, $basePath));
    $view->addExtension(new Twig_Extensions_Extension_Text());
    if ($c->get('settings')['twig_debug']) {
        $view->addExtension(new Twig_Extension_Debug());
    }
    return $view;
};
// Register provider
$container['flash'] = function () {
    return new \Slim\Flash\Messages();
};
$container['pdo'] = function ($c) {
    $pdo = new ExtendedPdo($c->get('settings')['db']['connection'], $c->get('settings')['db']['username'], $c->get('settings')['db']['password']);
    return $pdo;
};
$app->get('/', function (\Slim\Http\Request $request, \Slim\Http\Response $response, array $args) {
예제 #22
0
<?php

// DIC configuration
// get the DI container, bind all dependencies to it (auth, view, db, etc.)
$container = $app->getContainer();
// glued authentication class
$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']);
예제 #23
0
<?php

require 'vendor/autoload.php';
require 'config/env.php';
require 'config/mysql.php';
require 'config/redis.php';
// Create Slim app
$app = new \Slim\App(['settings' => ['debug' => true]]);
// Add whoops to slim because its helps debuggin' and is pretty.
$app->add(new \Zeuxisoo\Whoops\Provider\Slim\WhoopsMiddleware());
// Fetch DI Container
$container = $app->getContainer();
// Instantiate and add Slim specific extension
$view = new \Slim\Views\Twig(__DIR__ . '/views', ['cache' => $container->get('settings')['debug'] ? false : __DIR__ . '/cache']);
$view->addExtension(new Slim\Views\TwigExtension($container->get('router'), $container->get('request')->getUri()));
// Register Twig View helper
$container->register($view);
// Write some default variables available to every template
$view->offsetSet('realtime_url', $environment['REALTIME_URL']);
$view->offsetSet('current_watts', is_numeric($redis->get('owlintuition.watts')) ? $redis->get('owlintuition.watts') : '???');
$app->get('/', function (\Slim\Http\Request $request, \Slim\Http\Response $response, $args) {
    header("Location: /redis");
    exit;
});
$app->get('/redis', function (\Slim\Http\Request $request, \Slim\Http\Response $response, $args) {
    global $redis;
    $keys = $redis->keys('*');
    $redisKeys = [];
    foreach ($keys as $key) {
        $redisKeys[$key] = ['key' => $key, 'value' => $redis->get($key)];
    }
예제 #24
0
/**
 * Created by PhpStorm.
 * User: Chris
 * Date: 19/12/2015
 * Time: 16:15
 */
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Recipes\Middleware\LoggerMiddleware;
$container = $app->getContainer();
/** @var    \Slim\Container 	$c
 *  @return \Slim\Views\Twig 	$view
 */
$container['view'] = function ($c) {
    $view = new \Slim\Views\Twig('../resources/views');
    $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $_ENV['URL']));
    return $view;
};
/** @var 		\Slim\Container $c
 *  @return 	PDO 			$db		The database.
 */
$container['db'] = function ($c) {
    try {
        $db = new PDO('mysql:host=' . $_ENV['MYSQL_HOST'] . ';dbname=' . $_ENV['MYSQL_DB'], $_ENV['MYSQL_USERNAME'], $_ENV['MYSQL_PASSWORD']);
        $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $db;
    } catch (PDOException $e) {
        $c['logger']->error($e->getMessage());
    }
};
<?php

//require in composer dependencies
//setup autoload for composer
require '../vendor/autoload.php';
ini_set('display_errors', 'On');
$container = new \Slim\Container();
$container['config'] = function ($c) {
    return new \Noodlehaus\Config('../config/app.php');
};
$container['view'] = function ($c) {
    $view = new Slim\Views\Twig("../resources/views");
    //this is how you config it, add object with router and host
    $view->addExtension(new Slim\Views\TwigExtension($c['router'], $c['config']->get('url')));
    return $view;
};
$container['db'] = function ($c) {
    return 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"));
};
$container['mail'] = function ($c) {
    return new \Mailgun\Mailgun($c['config']->get('services.mailgun.secret'));
};
$app = new \Slim\App($container);
require_once 'routes.php';
예제 #26
0
<?php

require_once '../vendor/autoload.php';
$configuration = ['settings' => ['displayErrorDetails' => true]];
$container = new \Slim\Container($configuration);
$container['config'] = function ($c) {
    return new \Noodlehaus\Config('../config/app.php');
};
$container['view'] = function ($c) {
    $view = new \Slim\Views\Twig('../resources/views', ['debug' => true, 'strict_variables' => true]);
    $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $c['config']->get('url')));
    $view->addExtension(new Twig_Extension_Debug());
    return $view;
};
$container['db'] = function ($c) {
    return new PDO('mysql:host=' . $c['config']->get('db.mysql.host') . ';dbname=' . $c['config']->get('db.mysql.name'), $c['config']->get('db.mysql.username'), $c['config']->get('db.mysql.password'));
};
$container['mail'] = function ($c) {
    return new \Mailgun\Mailgun($c['config']->get('services.mailgun.secret'));
};
require 'database.php';
$container['message'] = function ($c) {
    return new App\Models\Message();
};
$container['article'] = function ($c) {
    return new App\Models\Article();
};
$container['sitecontent'] = function ($c) {
    return new App\Models\SiteContent();
};
$app = new \App\App($container);
<?php

$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()));
    //
    // <a href="{{ path_for('hello', {name: "Peppino"}) }}">
    // <a href="{{ base_url() }}{{ path_for('hello', {name: "Peppino"}) }}">
    //
    $view->addExtension(new Twig_Extension_Debug());
    //
    // <pre>
    // {{ dump("test") }}
    // </pre>
    return $view;
};
$container['cache'] = function () {
    return new \Slim\HttpCache\CacheProvider();
};
$container['flash'] = function () {
    return new \Slim\Flash\Messages();
};
// monolog
$container['logger'] = function ($c) {
예제 #28
0
use Doctrine\Common\Cache\FilesystemCache;
// DIC configuration
$container = $app->getContainer();
// monolog
$container['logger'] = function ($container) {
    $settings = $container->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;
};
// Twig views
$container['view'] = function ($container) {
    $settings = $container->get('settings')['view'];
    $view = new \Slim\Views\Twig($settings['templates'], ['cache' => $settings['cache'], 'debug' => true]);
    $view->addExtension(new \Slim\Views\TwigExtension($container['router'], \nanotwi\Middleware\ProxiedHttpsSupport::getRealUri($container['request'])));
    $view->addExtension(new nanotwi\Views\TwigExtensionAutologinPath($container));
    return $view;
};
// Twig views
$container['cache'] = function ($container) {
    $settings = $container->get('settings')['cache'];
    $cache = new FilesystemCache($settings['path']);
    $cache->setNamespace('twitter_');
    return $cache;
};
// High-level Twitter API
$container['nanoTwitter'] = function ($container) {
    $settings = $container->get('settings')['twitter'];
    $cache = $container->get('cache');
    return new \nanotwi\NanoTwitter($settings, $cache);
예제 #29
0
<?php

// DIC configuration
$container = $app->getContainer();
// view renderer
$container['renderer'] = function ($c) {
    $settings = $c->get('settings')['renderer'];
    return new Slim\Views\PhpRenderer($settings['template_path']);
};
// Register component on container
$container['view'] = function ($c) {
    $settings = $c->get('settings')['view'];
    $view = new \Slim\Views\Twig($settings['template_path'], ['debug' => $settings['debug'], 'cache' => $settings['cache_path']]);
    // Add extensions
    $view->addExtension(new \Slim\Views\TwigExtension($c['router'], $c['request']->getUri()));
    $view->addExtension(new Twig_Extension_Debug());
    return $view;
};
// Flash messages
$container['flash'] = function ($c) {
    return new \Slim\Flash\Messages();
};
// 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;
};
$container['facebook'] = function ($c) {
예제 #30
0
<?php

/**
 * We'll use Twig for our views. In order to use it, we need to register the Slim\Twig-View
 * package. This allows us to make use of it inside closures with $this->view.
 */
$container['view'] = function ($c) {
    $view = new \Slim\Views\Twig(ROOT_DIR . '/src/templates');
    $extension = new \Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri());
    $view->addExtension($extension);
    return $view;
};