jasny / view
用于与模板引擎一起使用 PSR-7 的抽象
Requires
- php: >=5.6.0
- psr/http-message: ^1.0
Requires (Dev)
- jasny/php-code-quality: ^2.0
- jasny/twig-extensions: ^1.0|^2.0
- kriswallsmith/assetic: ^1.4
- twig/extensions: ^1.4
- twig/twig: ^1.31
Suggests
- jasny/assetic-extensions: Improved caching for asstic
- jasny/controller: A general purpose controller for PSR-7
- jasny/mvc: Meta package for Jasny Router, Controller and View
- jasny/twig-extensions: Additional features for Twig
- kriswallsmith/assetic: Asset management
- twig/extensions: Common additional features for Twig
- twig/twig: Needed to work with Twig templates
This package is auto-updated.
Last update: 2022-04-11 14:25:54 UTC
README
用于与 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
。
相关库
- Jasny HTTP Message - 一个 PSR-7 实现
- Jasny Controller - 一个用于 PSR-7 的通用控制器
- Jasny MVC - Jasny Router、Controller 和 View 的元包
- Twig - PHP 的灵活、快速、安全模板引擎