jasny/view

此包已被弃用且不再维护。未建议替代包。

用于与模板引擎一起使用 PSR-7 的抽象

v1.1.0 2017-06-05 19:31 UTC

This package is auto-updated.

Last update: 2022-04-11 14:25:54 UTC


README

Build Status Scrutinizer Code Quality Code Coverage SensioLabsInsight Packagist Stable Version Packagist License

用于与 PSR-7 一起使用模板引擎的抽象。

Jasny View 不绑定任何框架,可以在需要使用现有模板引擎(如 Twig)与 PSR-7 一起使用的任何地方使用。

安装

使用 composer 安装

composer require jasny\view

使用方法

Jasny View 的所有视图层都实现了 Jasny\ViewInterface,它定义了以下方法

暴露

将一个函数暴露给视图。这可以是一个内置的 PHP 函数,一个用户定义的函数,甚至是匿名函数。

expose(string $name, callable $function = null);

您可以省略第二个参数。在这种情况下,名称将被用作函数名。

$view->expose('strlen');
$view->expose('replace', 'str_replace');
$view->expose('add', function($a, $b) { return $a + $b; });

渲染

渲染并输出一个模板。输出是通过将结果写入响应体并设置响应 Content-Type 头来完成的。

render(ResponseInterface $response, string $name, array $context = []);

name 是模板的名称,通常与文件名相对应。The context 是提供给视图的值(作为变量或常量)。

$view->render($response, 'index', ['color' => 'blue', 'answer' => 42]);

Twig

Jasny\View\Twig 是围绕 Twig_Environment 的包装。在创建视图对象时,您可以指定创建环境的选项或传递一个 Twig 环境。

$view = new Jasny\View\Twig(['path' => 'views', 'cache' => '/tmp/views']);

必须提供 path 选项。它传递给 Twig_Loader_Filesystem 并作为视图文件所在的基目录。

其他 选项 在创建 Twig_Environment 时传递给构造函数。以下选项可用

  • debug:当设置为 true 时,自动将 "auto_reload" 设置为 true(默认为 false)。
  • charset:模板使用的字符集(默认为 UTF-8)。
  • basetemplateclass:用于生成模板的基模板类(默认为 Twig_Template)。
  • cache:存储编译模板的绝对路径,一个 TwigCacheInterface 实现或 false 以禁用编译缓存(默认)。
  • autoreload:是否在原始源更改时重新加载模板。如果没有提供自动重新加载选项,它将根据调试值自动确定。
  • strict_variables:是否在模板中忽略无效变量(默认为 false)。
  • autoescape:是否启用自动转义(默认为 html)
    • false:禁用自动转义
    • html, js:将自动转义设置为支持的策略之一
    • name:根据模板名称扩展设置自动转义策略
    • PHP 回调:一个基于模板 "name" 返回转义策略的 PHP 回调
  • optimizations:一个标志,指示要应用哪些优化(默认为 -1,表示启用所有优化;将其设置为 0 以禁用)。

如果您的应用侧重于依赖注入,则建议传递 Twig_Environment

getTwig

getTwig() 方法返回它包装的 Twig_Environment 对象。它可以用来扩展 twig 环境。

$view = new Jasny\View\Twig(['path' => 'views']);
$view->getTwig()->addExtension(new MyTwigExtension());
$view->getTwig()->addGlobal('foo', 'bar');

addDefaultExtensions

调用 $view->addDefaultExtensions() 将添加所有 官方 Twig 扩展Jasny Twig 扩展(如果可用)。

expose

对于 Twig,expose 可选接受第三个参数。您可以指定是否将函数添加为 Twig 函数Twig 过滤器

expose($name, $function = null, $as = 'function')

render

如果名称不包含扩展名,render 将自动添加 .html.twig。它调用 Twig 环境的 render 方法,并将渲染的内容写入响应体。

PHP

PHP 层不使用模板渲染引擎,而是简单地包含一个 PHP 文件。

构造函数接收一个选项数组,必须包含一个 path 属性。这是视图文件所在的目录的路径。

可选地,可以传递 ext 选项。这确定了 render() 的视图名称的默认扩展名。

$view = new Jasny\View\Twig(['path' => 'views', 'ext' => 'phtml']);

getPath

获取目录路径。

getExt

获取默认扩展名。

expose

通常不需要调用 expose。全局 PHP 函数(内置或用户定义)已经可用。将函数作为别名(因此 $name 不等于 $template)不可用。

render

render() 方法将使用 include 包含指定的模板文件。在相同的作用域中,提取了 $context,因此所有内容都可以作为变量在视图中使用。

使用输出缓冲回调将输出流式传输到响应体。

$view->render($response, 'index', ['color' => 'blue', 'answer' => 42]);

如果指定的文件名是目录,将自动使用该目录的索引文件。如果文件不存在,将抛出 RuntimeExpection

相关库