Move Smarty view creation to ViewFactory class
This commit is contained in:
parent
4d104c852f
commit
0e7aaea9fc
3 changed files with 47 additions and 23 deletions
41
classes/ViewFactory.php
Normal file
41
classes/ViewFactory.php
Normal file
|
@ -0,0 +1,41 @@
|
|||
<?php
|
||||
/**
|
||||
* ViewFactory class.
|
||||
*/
|
||||
namespace Alltube;
|
||||
|
||||
use Slim\Container;
|
||||
use Slim\Http\Request;
|
||||
use Slim\Views\Smarty;
|
||||
use Slim\Views\SmartyPlugins;
|
||||
|
||||
/**
|
||||
* Create Smarty view object.
|
||||
*/
|
||||
class ViewFactory
|
||||
{
|
||||
/**
|
||||
* Create Smarty view object.
|
||||
*
|
||||
* @param Container $container Slim dependency container
|
||||
* @param Request $request PSR-7 request
|
||||
*
|
||||
* @return Smarty
|
||||
*/
|
||||
public static function create(Container $container, Request $request = null)
|
||||
{
|
||||
if (!isset($request)) {
|
||||
$request = $container['request'];
|
||||
}
|
||||
|
||||
$view = new Smarty(__DIR__.'/../templates/');
|
||||
|
||||
$smartyPlugins = new SmartyPlugins($container['router'], $request->getUri());
|
||||
$view->registerPlugin('function', 'path_for', [$smartyPlugins, 'pathFor']);
|
||||
$view->registerPlugin('function', 'base_url', [$smartyPlugins, 'baseUrl']);
|
||||
|
||||
$view->registerPlugin('modifier', 'noscheme', 'Smarty_Modifier_noscheme');
|
||||
|
||||
return $view;
|
||||
}
|
||||
}
|
16
index.php
16
index.php
|
@ -4,29 +4,21 @@ require_once __DIR__.'/vendor/autoload.php';
|
|||
use Alltube\Config;
|
||||
use Alltube\Controller\FrontController;
|
||||
use Alltube\UglyRouter;
|
||||
use Alltube\ViewFactory;
|
||||
use Slim\App;
|
||||
|
||||
if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '/index.php') !== false) {
|
||||
header('Location: '.str_ireplace('/index.php', '/', $_SERVER['REQUEST_URI']));
|
||||
die;
|
||||
}
|
||||
|
||||
$app = new \Slim\App();
|
||||
$app = new App();
|
||||
$container = $app->getContainer();
|
||||
$config = Config::getInstance();
|
||||
if ($config->uglyUrls) {
|
||||
$container['router'] = new UglyRouter();
|
||||
}
|
||||
$container['view'] = function ($c) {
|
||||
$view = new \Slim\Views\Smarty(__DIR__.'/templates/');
|
||||
|
||||
$smartyPlugins = new \Slim\Views\SmartyPlugins($c['router'], $c['request']->getUri());
|
||||
$view->registerPlugin('function', 'path_for', [$smartyPlugins, 'pathFor']);
|
||||
$view->registerPlugin('function', 'base_url', [$smartyPlugins, 'baseUrl']);
|
||||
|
||||
$view->registerPlugin('modifier', 'noscheme', 'Smarty_Modifier_noscheme');
|
||||
|
||||
return $view;
|
||||
};
|
||||
$container['view'] = ViewFactory::create($container);
|
||||
|
||||
$controller = new FrontController($container, null, $_COOKIE);
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace Alltube\Test;
|
|||
|
||||
use Alltube\Config;
|
||||
use Alltube\Controller\FrontController;
|
||||
use Alltube\ViewFactory;
|
||||
use Slim\Container;
|
||||
use Slim\Http\Environment;
|
||||
use Slim\Http\Request;
|
||||
|
@ -53,17 +54,7 @@ class FrontControllerTest extends \PHPUnit_Framework_TestCase
|
|||
$this->container = new Container();
|
||||
$this->request = Request::createFromEnvironment(Environment::mock());
|
||||
$this->response = new Response();
|
||||
$this->container['view'] = function ($c) {
|
||||
$view = new \Slim\Views\Smarty(__DIR__.'/../templates/');
|
||||
|
||||
$smartyPlugins = new \Slim\Views\SmartyPlugins($c['router'], $this->request->getUri());
|
||||
$view->registerPlugin('function', 'path_for', [$smartyPlugins, 'pathFor']);
|
||||
$view->registerPlugin('function', 'base_url', [$smartyPlugins, 'baseUrl']);
|
||||
|
||||
$view->registerPlugin('modifier', 'noscheme', 'Smarty_Modifier_noscheme');
|
||||
|
||||
return $view;
|
||||
};
|
||||
$this->container['view'] = ViewFactory::create($this->container, $this->request);
|
||||
$this->controller = new FrontController($this->container, Config::getInstance('config_test.yml'));
|
||||
$this->container['router']->map(['GET'], '/', [$this->controller, 'index'])
|
||||
->setName('index');
|
||||
|
|
Loading…
Reference in a new issue