diff --git a/classes/ViewFactory.php b/classes/ViewFactory.php new file mode 100644 index 0000000..8c3f102 --- /dev/null +++ b/classes/ViewFactory.php @@ -0,0 +1,41 @@ +getUri()); + $view->registerPlugin('function', 'path_for', [$smartyPlugins, 'pathFor']); + $view->registerPlugin('function', 'base_url', [$smartyPlugins, 'baseUrl']); + + $view->registerPlugin('modifier', 'noscheme', 'Smarty_Modifier_noscheme'); + + return $view; + } +} diff --git a/index.php b/index.php index 313b505..0bb2c6e 100644 --- a/index.php +++ b/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); diff --git a/tests/FrontControllerTest.php b/tests/FrontControllerTest.php index f73e1d7..859f7de 100644 --- a/tests/FrontControllerTest.php +++ b/tests/FrontControllerTest.php @@ -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');