ge1i0n / bitrix-blade
0.10.1
2024-03-06 09:42 UTC
Requires
- php: ^7.3|^8.0
- arrilot/bitrix-hermitage: ^1
- illuminate/config: 9.*
- illuminate/container: 9.*
- illuminate/events: 9.*
- illuminate/view: 9.*
- ramsey/uuid: ^4.7.5
README
Bitrix Blade - 将 Blade 模板引擎集成到 Bitrix
安装
-
composer require ge1i0n/bitrix-blade
-
在 init.php 中添加
use Arrilot\BitrixBlade\BladeProvider; require $_SERVER['DOCUMENT_ROOT']."/vendor/autoload.php"; BladeProvider::register();
使用
将组件模板从 template.php
更改为 template.blade
,然后可以开始使用 Blade
指令 @include('path.to.view')
被修改为以下方式
- 首先在当前模板组件目录(template.blade 所在位置)中查找 view
- 如果在该目录中没有找到 view,则在基本目录(默认为
local/views
,但可以在调用BladeProvider::register()
时指定)中查找
X-组件
您可以在模板中使用 x-组件。默认情况下,x-组件类从命名空间 View\\Components\\
中加载,但可以在配置中指定自己的命名空间。如果您想使用特定的组件类,可以按照以下方式在编译器中注册它
$compiler = BladeProvider::getCompiler(); $compiler->component('your-component', \\Namespace\\YourComponent::class);
如果需要,您还可以使用 额外的命名空间。为此,您需要注册它们
$compiler = BladeProvider::getCompiler(); $compiler->componentNamespace('Any\\Components\\Namespace\\', 'any');
自定义指令(custom directives)
为了添加自己的指令,需要将其注册到编译器中
$compiler = BladeProvider::getCompiler(); $compiler->directive('directiveName', function ($expression) { return '...'; });
安装包时,BladeProvider::register()
会自动为您注册一些有用的指令
@bxComponent
是$APPLICATION->IncludeComponent()
的等价物@block('key')
和@endblock
- 之间的内容将在调用$APPLICATION->ShowViewContent('key')
的地方输出@lang('key')
等同于!! Bitrix\Main\Localization\Loc::getMessage('key') !!}
@auth
和@endauth
- 等同于<?php if($USER->IsAuthorized()) ?> ... <?php endif ?>
@guest
和@endguest
- 类似,但检查未授权用户@admin
和@endadmin
- 类似,但使用$USER->IsAdmin()
@csrf
- 等同于<input type="hidden" name="sessid" value="{!! bitrix_sessid() !!}" />
- 与缓存相关的指令
配置
如果需要,可以在配置中更改路径。.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' 'namespace' => 'Custom\\Namespace\\', // по умолчанию 'View\\Components\\' ], 'readonly' => true, ],
清除缓存
为了确保 Blade 的高效运行,它会将编译后的模板缓存为 php 文件。在大多数情况下,您不需要手动清理这个缓存,因为 Blade 会比较模板文件和缓存的修改时间,并自动使缓存失效。然而,在某些情况下(例如添加新的自定义指令时),您可能需要手动清除缓存。这可以通过 BladeProvider::clearCache()
方法完成
一些注意事项
- Bitrix 允许仅在组件模板中使用第三方模板引擎。网站模板只能使用 php。
- 由于显而易见的原因,无法充分利用模板继承。
- 不能将模板调用为
template.blade.php
。Bitrix 会看到.php
并启用 php 引擎。然而,在其他地方没有任何阻止您使用它的因素。 - 在模板中应使用
$template
代替$this
- 例如$template->setFrameMode(true);
- 不需要在 blade-模板中编写
<?if(!defined("B_PROLOG_INCLUDED")||B_PROLOG_INCLUDED!==true) die();?>
检查,它将自动添加到编译后的 view 中。同时,也会执行extract($arResult, EXTR_SKIP);
- 要使模板语言文件正确连接,必须按常规命名该语言文件 -
template.php
附加信息
PhpStorm
- 要在PhpStorm中启用Blade文件的语法高亮显示,需要将此扩展添加到
设置->编辑器->文件类型->Blade
- 为了使PhpStorm能够正确理解和高亮显示此包中的自定义指令,可以将它们添加进去。这可以通过在
设置->语言和框架->PHP->Blade->指令
中进行操作。