【问题标题】:Slim framework 3 php-view variableSlim 框架 3 php-view 变量
【发布时间】:2016-06-16 22:42:39
【问题描述】:

我想在模板上始终提供来自请求的变量 ($request->getUri()->getBasePath();)。我该怎么做?使用中间件,而不必将上述内容作为参数传递给渲染器->每次都在所有路由上渲染?

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

更新: 这可以在 php-view 2.1.0 之后完成:

dependencies.php:

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

中间件.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
    $basePath=$uri->getBasePath();
    $rpath=$uri->getPath();
?>

【问题讨论】:

标签: php slim middleware


【解决方案1】:

PHP-View 2.1.0 版现在支持在渲染之前设置模板变量。见https://github.com/slimphp/PHP-View#template-variables

【讨论】:

    【解决方案2】:

    查看 PhpRenderer 的 the Code 时,您会发现目前无法在 render() 函数之外指定 data

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

    【讨论】:

      猜你喜欢
      • 2016-05-17
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 1970-01-01
      • 2011-10-12
      • 2017-07-23
      • 1970-01-01
      相关资源
      最近更新 更多