2016-03-03 47 views
1

我想从请求($ request-> getUri() - > getBasePath();)总是可用的模板。我该怎么做,例如用中间件而不必将上面的参数作为参数传递给renderer->每次都在所有路径上渲染?Slim框架3 php-view变量

$app->get(... 
    ... 
    $args['basepath']=$request->getUri()->getBasePath(); 
    return $this->renderer->render($response, 'test.php', $args); 
}); 

UPDATE:

dependencies.php:

$container['renderer'] = function ($c) { 
    $settings = $c->get('settings')['renderer']; 
    return new Slim\Views\PhpRenderer($settings['template_path']); 
}; 

middleware.php:

$app->add(function (Request $request, Response $response, callable $next) { 
    $uri = $request->getUri(); 
    $renderer = $this->get('renderer'); 
    $renderer->addAttribute('uri', $request->getUri()); 
    return $next($request, $response); 
}); 
这可以PHP-视图2.1.0作为这样之后进行

然后,模板内:

<?php 
    $basePath=$uri->getBasePath(); 
    $rpath=$uri->getPath(); 
?> 
+0

添加了问题请求:https://github.com/slimphp/PHP-View/issues/21 – sivann

回答

0

虽然寻找到你会看到PhpRenderer的the Code目前还没有办法指定datarender()功能。

您可以创建问题和/或提出拉取请求以支持该功能。