proklung/bitrix-blade-bundle

Symfony 的Bundle,支持Blade模板引擎

安装: 25

依赖者: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

类型:symfony-bundle

1.2.2 2021-08-08 14:10 UTC

This package is auto-updated.

Last update: 2024-09-08 20:46:20 UTC


README

基于 https://github.com/arrilot/bitrix-blade

安装

composer require proklung/bitrix-blade-bundle

使用

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

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

首先在当前模板组件的目录(template.blade 所在位置)中查找 view。

如果在该目录中没有找到 view,则相对于基本目录(默认为 local/views,但在调用 BladeProvider::register() 时可以指定其他目录)查找。

附加信息

容器中出现两个Blade模板渲染服务

  • symfony_blade.blade - 用于Bitrix的渲染器。
  • symfony_blade.blade_instance - 通用框架的渲染器(例如,在Wordpress中工作)。
方法

返回指定模板的Laravel View。在其内部有一个魔法方法 __toString,它调用渲染器。

    /**
     * Получить View шаблона.
     *
     * @param string $file      Blade шаблон.
     * @param array  $data      Данные.
     * @param array  $mergeData Данные.
     *
     * @return View
     */
    public function file(string $file, array $data = [], array $mergeData = []) : View;

可以动态设置模板引擎查找模板的路径。

    /**
     * Добавить базовый путь.
     *
     * @param string $path Базовый путь.
     *
     * @return void
     */
    public function addBasePath(string $path): void;

自定义指令 (custom directives)

安装包时,已为您自动注册了一些有用的指令

@bxComponent - 等同于 $APPLICATION->IncludeComponent() @block('key')@endblock - 在调用 $APPLICATION->ShowViewContent('key') 的位置输出它们之间的内容 @lang('key') - 等同于 {!! Bitrix\Main\Localization\Loc::getMessage('key') !!} @auth@endauth - 缩写 IsAuthorized() ?> ... @guest@endguest - 类似于,但检查未授权用户 @admin@endadmin - 类似于,但 $USER->IsAdmin() @csrf - 简化的形式

过滤器

lcfirst - 第一个字符转换为小写 ucfirst - 第一个字符转换为大写 date - 将字符串转换为日期,根据指定格式 trim - 去除字符串两端的空格

指令

istrue / endistrue isfalse / endisfalse isnull / endisnull isnotnull / endisnotnull

数据转储

dump dd

添加自己的Blade过滤器或指令

要使用自定义过滤器,需要用标签 blade.custom.filter 标记服务。指令用标签 blade.custom.directive(类应实现接口 BladeDirectiveInterface)。

配置

如有必要,可以在包的配置文件 local/configs/packages/symfony_blade.yaml 中更改路径。

symfony_blade:
  baseViewPath: '%kernel.project_dir%/local/views'
  cachePath: '%kernel.project_dir%/bitrix/cache/blade'
  readonly: false

清除缓存

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

对于Bitrix,存在一个服务 symfony_blade.clear_cache,当存在 GET 参数 clear_cache 时,会清除缓存。

一些注意事项

Bitrix 允许仅在组件模板中使用第三方模板引擎。网站模板只能使用PHP。

由于显而易见的原因,无法充分利用模板的继承。

不能使用传统的 .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 > 指令 中完成。