andrew72ru/bitrix-twig

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

bitrix框架的Twig渲染器

v0.1.4 2018-06-13 05:27 UTC

This package is auto-updated.

Last update: 2022-11-20 08:07:09 UTC


README

用于在bitrix框架中渲染twig模板的模块

rus

简介

Bitrix框架允许使用第三方模板引擎渲染内容,特别是 twig

为此,bitrix需要一个全局(注意!)数组 $arCustomTemplateEngines,其结构如下

$arCustomTemplateEngines['twig'] = [
    'templateExt' => ['twig', 'html.twig'],
    'function'    => 'renderTwigTemplate'
];

templateExt 键描述了模板文件的扩展名,而在数组的 function 键中包含实现模板渲染的全局(注意!)函数名。

该函数必须实例化模板引擎类,并输出(是的,就是fucking echo,而不是返回!)渲染的结果。

如果你因为这一点而感到头痛,请稍等,这还不是全部

安装

你必须在应用程序初始化时使用composer自动加载器。你的站点必须使用utf-8编码。

要安装模块,只需运行

composer require andrew72ru/bitrix-twig

模块将被存储在您的 vendor 目录中,并注册其类和函数。

配置

默认配置

'debug' => false,
'charset' => 'utf-8',
'cache' => $_SERVER['DOCUMENT_ROOT'] . '/bitrix/cache/twig',
'auto_reload' => $this->request->get('clear_cache') ? 'Y' === strtoupper($this->request->get('clear_cache')) : false,
'autoescape' => false,

您可以在 bitrix/.settings.php 文件中覆盖或扩展此配置。配置键为 twigRenderer。您的配置可能如下所示

// bitrix/.settings.php

<?php

return [
    // skip
    'twigRenderer' => [
        'value' => [
            'debug' => true,
        ]
    ],
    // skip
];

用法

简单地将文件 <component_template_name>.thml.twig(或 <component_template_name>.twig)放置到您的模板文件夹中,而不是 <component_template_name>.php。所有html标记和twig函数/过滤器将由twig引擎处理。模块实现了一些自定义函数以集成模板引擎和bitrix框架(见下文)。

自定义twig变量函数

全局变量
  • $_SERVER_SERVER;
  • $_REQUEST_REQUEST;
  • $_GET_GET;
  • $_POST_POST;
  • $_FILES_FILES;
  • $_SESSION_SESSION;
  • $_COOKIE_COOKIE;
  • $_GLOBALS_GLOBALS
自定义函数
  • showError
  • showMessage
  • showNote
  • bitrix_sessid_post
  • bitrix_sessid_get
  • getMessage
  • include_component

所有这些都是bitrix框架的函数。

  • _call_static($class, $method, $arguments = []) 是一个函数,用于从框架内核或自动加载的类中调用可用类中的静态方法。
模板中的变量
  • result — 传统的模板中的 $arResult;
  • params — 传统的模板中的 $arParams;
  • lang — 包含所有已加载的本地化消息的数组;
  • templateCBitrixComponentTemplate 类的实例;
  • templateFolder — 模板文件夹的路径;
  • parentTemplateFolder — 父模板文件夹的路径;

事件

模块初始化后调用 onAfterTwigEngineInit 事件。您可以使用它来添加自己的函数/过滤器/扩展。

测试

由于Bitrix框架没有PSR自动加载器、服务容器以及其他框架必备的东西,当前的测试只包含一个最小的(示例)测试。只有当您安装了框架、安装了模块并且至少有一个由该模块渲染的模板时,才能进行测试。

如果您知道如何为所有类编写测试,欢迎您提供帮助。