使用Slim Framework 3设置模板目录


Set template directory using Slim Framework 3

使用Slim Framework 2,您可以使用以下代码设置模板目录:

// Views
$view = $app->view();
$view->setTemplateDirectory('../app/views');

如何使用Slim Framework 3实现这一点?

目前我得到这个错误:

Fatal error: Call to a member function setTemplateDirectory() on null

有人知道如何在SlimFramework3中做到这一点吗?

您可以使用'Slim'Container实例:

// Create container
$container = new 'Slim'Container;
// Register component on container
$container['view'] = function ($c) {
    $view = new 'Slim'Views'Twig('your/path/to/templates');
    $view->addExtension(new 'Slim'Views'TwigExtension(
        $c['router'],
        $c['request']->getUri()
    ));
    return $view;
};

然后你可以使用它:

$app = new 'Slim'App($container);
// The route
$app->get('/foo', function (ServerRequestInterface $request, ResponseInterface $response) {
  return $this->view->render($response, 'index.html', [
        'name' => 'name'
    ]);
});
$app->run();

查看官方文件(Mika Tuupola的建议)。