yiisoft/view

Yii 视图渲染库

10.0.0 2024-06-28 10:02 UTC

This package is auto-updated.

Last update: 2024-09-02 12:03:12 UTC


README

Yii

Yii 视图渲染库


Latest Stable Version Total Downloads Build Status Code Coverage Mutation testing badge static analysis type-coverage

这个库提供模板渲染抽象,支持布局-视图-子视图层次结构,默认基于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 软件维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack