andrew72ru / bitrix-twig
bitrix框架的Twig渲染器
Requires
- twig/twig: ^1.35
Requires (Dev)
- codeception/codeception: ^2.3
- friendsofphp/php-cs-fixer: ~2.2
README
用于在bitrix框架中渲染twig模板的模块
简介
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
— 包含所有已加载的本地化消息的数组;template
—CBitrixComponentTemplate
类的实例;templateFolder
— 模板文件夹的路径;parentTemplateFolder
— 父模板文件夹的路径;
事件
模块初始化后调用 onAfterTwigEngineInit
事件。您可以使用它来添加自己的函数/过滤器/扩展。
测试
由于Bitrix框架没有PSR自动加载器、服务容器以及其他框架必备的东西,当前的测试只包含一个最小的(示例)测试。只有当您安装了框架、安装了模块并且至少有一个由该模块渲染的模板时,才能进行测试。
如果您知道如何为所有类编写测试,欢迎您提供帮助。