yiisoft / view
Yii 视图渲染库
10.0.0
2024-06-28 10:02 UTC
Requires
- php: ^8.0
- psr/event-dispatcher: 1.0.0
- psr/event-dispatcher-implementation: 1.0.0
- yiisoft/arrays: ^2.0|^3.0
- yiisoft/cache: ^1.0|^2.0|^3.0
- yiisoft/files: ^1.0|^2.0
- yiisoft/html: ^2.5|^3.0
- yiisoft/json: ^1.0
Requires (Dev)
- maglnet/composer-require-checker: ^4.2
- phpunit/phpunit: ^9.5
- rector/rector: 1.0.*
- roave/infection-static-analysis-plugin: ^1.25
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.20
- yiisoft/aliases: ^3.0
- yiisoft/di: ^1.2
- yiisoft/psr-dummy-provider: ^1.0
- yiisoft/test-support: ^1.4|^3.0
README
Yii 视图渲染库
这个库提供模板渲染抽象,支持布局-视图-子视图层次结构,默认基于PHP的自定义渲染器,以及更多。它在 Yii 框架 中使用,但也可以单独使用。
需求
- PHP 8.0 或更高版本。
安装
该包可以使用 Composer 安装
composer require yiisoft/view
通用用法
该包提供两种管理视图模板的使用场景
View 和 WebView 服务的状态
虽然 View 和 WebView 服务本身是无状态的,但它们都有状态数据和可变数据集。
View 服务
- 参数,
- 块,
- 主题,
- 地区。
WebView 服务
- 参数,
- 块,
- 主题,
- 地区,
- 标题,
- 元标签和链接标签,
- JS/CSS 字符串,
- JS/CSS 文件。
当克隆服务时,View 和 WebView 的状态不会被克隆。因此,当使用 with*() 时,新旧实例共享同一组状态可变数据。例如,可以通过控制器中的类型提示来获取 WebView 并更改上下文路径
final class BlogController { private WebView $view; public function __construct (WebView $view) { $this->view = $view->withContextPath(__DIR__.'/views'); } }
然后在一个小部件中注册 CSS
final class LastPosts extends Widget { private WebView $view; public function __construct (WebView $view) { $this->view = $view; } protected function run(): string { ... $this->view->registerCss('.lastPosts { background: #f1f1f1; }'); ... } }
地区状态
您可以通过使用 setLocale() 来更改地区,这将应用于使用当前状态的包括现有在内的所有其他实例。如果您只想为单个实例更改地区,您可以使用不可变的 withLocale() 方法。地区将应用于通过 render() 调用的所有视图。
可变方法示例
final class LocaleMiddleware implements MiddlewareInterface { ... private WebView $view; ... public function __construct ( ... WebView $view ... ) { $this->view = $view; } public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { ... $this->view->setLocale($locale); ... } }
不可变方法示例
final class BlogController { private WebView $view; public function __construct (WebView $view) { $this->view = $view; } public function index() { return $this->view->withLocale('es')->render('index'); } }
重置状态
要获取深度克隆的 View 或 WebView,请使用 withClearedState()
$view = $view->withClearedState();
扩展
- Yii 视图渲染器 - 用于在 Yii 框架 中使用的包装器。为 Web 环境添加额外功能,并与 PSR-7 接口兼容。
- yiisoft/view-twig - 一个扩展,提供了一个视图渲染器,允许您使用 Twig 视图模板引擎,而不是默认的 PHP 渲染器。
文档
如果您需要帮助或有任何问题,Yii 论坛是寻求帮助的好地方。您还可以查看其他Yii 社区资源。
许可证
Yii 视图渲染库是免费软件。它根据BSD许可证条款发布。有关更多信息,请参阅LICENSE
。
由Yii 软件维护。