arrilot / bitrix-blade

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

0.8.0 2020-10-13 16:05 UTC

This package is auto-updated.

Last update: 2023-01-17 12:31:15 UTC


README

Latest Stable Version Total Downloads Scrutinizer Quality Score

该包不再活跃

原因是我们在自己的项目中不再使用Bitrix。如果您对这个项目感兴趣并希望支持它,请将其分叉并在此存储库中创建Issue,以便我们将分叉链接放置在此处。

分叉

Bitrix Blade - Blade 模板引擎在 Bitrix 中的集成

安装

1)composer require arrilot/bitrix-blade

  1. 添加到 init.php
use Arrilot\BitrixBlade\BladeProvider;

require $_SERVER['DOCUMENT_ROOT']."/vendor/autoload.php";

BladeProvider::register();

使用

将组件模板从 template.php 改为 template.blade,然后可以使用 Blade

指令 @include('path.to.view') 被修改如下

  1. 首先在当前模板组件目录(即 template.blade 所在目录)中查找 view
  2. 如果在该目录中没有找到 view,则在基本目录(默认为 local/views,但在调用 BladeProvider::register() 时可以指定其他目录)中查找

用户自定义指令(custom directives)

为了添加自己的指令,需要将其在编译器中注册

$compiler = BladeProvider::getCompiler();
$compiler->directive('directiveName', function ($expression) {
    return '...';
});

安装包时,BladeProvider::register() 会自动为您注册一些有用的指令

  1. @bxComponent - 等同于 $APPLICATION->IncludeComponent()
  2. @block('key')@endblock - 之间包含的内容将在调用 $APPLICATION->ShowViewContent('key') 的地方输出
  3. @lang('key') - 等同于 !!Bitrix\Main\Localization\Loc::getMessage('key')!!
  4. @auth@endauth - 简化的 ?php if($USER->IsAuthorized()) ?php ... ?php endif
  5. @guest@endguest - 类似,但检查非授权用户
  6. @admin@endadmin - 类似,但使用 $USER->IsAdmin()
  7. @csrf - 简化形式为 <input type="hidden" name="sessid" value="!!bitrix_sessid()!!" />
  8. 与仓库相关的指令

配置

如有必要,可以在配置文件中更改路径。.settings_extra.php

    'bitrix-blade' => [
        'value'    => [
            'baseViewPath' => '/absolute/path/or/path/from/document/root', // по умолчанию 'local/views'
            'cachePath' => '/absolute/path/or/path/from/document/root', // по умолчанию 'local/cache/blade'
        ],
        'readonly' => false,
    ],

清理缓存

为了确保Blade运行速度快,它将编译后的模板缓存到PHP文件中。在大多数情况下,不需要手动清理这个缓存,因为Blade会检查模板文件和缓存的修改时间,并自动使缓存无效。然而,在某些情况下(例如添加新的用户指令),仍然需要重置这个缓存。这可以通过方法BladeProvider::clearCache()完成。

一些注意事项

  1. Bitrix只允许在组件模板中使用第三方模板引擎。网站模板仅支持PHP。
  2. 由于明显的原因,无法充分发挥模板继承的功能。
  3. 不能使用传统的.blade.php扩展。Bitrix看到.php扩展名时,会启动PHP引擎。
  4. 在模板中,应使用$template代替$this - 例如$template->setFrameMode(true);
  5. 不需要在blade模板中编写检查<?if(!defined("B_PROLOG_INCLUDED")||B_PROLOG_INCLUDED!==true) die();?>的代码,它会在编译的view中自动添加。同时,也会执行extract($arResult, EXTR_SKIP);
  6. 为了使语言文件从模板中连接,需要将其命名为通常的template.php

附加信息

PhpStorm

  1. 要在PhpStorm中启用对.blade文件的语法高亮,需要在Settings->Editor->File Types->Blade中添加此扩展。
  2. 为了使PhpStorm正确理解并高亮显示此包中的用户指令,可以将它们添加到其中。这可以在Settings->Language & Frameworks->PHP->Blade->Directives中完成。