https://github.com/proklung/symfony.blade.bundle
Бандл для Symfony, обеспечивающий поддержку шаблонизатора Blade в связке Битрикс + Symfony или Wordpress + Symfony.
https://github.com/proklung/symfony.blade.bundle
bitrix bitrix-symfony php7 wordpress-symfony
Last synced: 2 months ago
JSON representation
Бандл для Symfony, обеспечивающий поддержку шаблонизатора Blade в связке Битрикс + Symfony или Wordpress + Symfony.
- Host: GitHub
- URL: https://github.com/proklung/symfony.blade.bundle
- Owner: ProklUng
- Created: 2021-04-27T14:20:28.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2021-08-08T14:10:35.000Z (over 3 years ago)
- Last Synced: 2024-12-25T21:24:16.165Z (4 months ago)
- Topics: bitrix, bitrix-symfony, php7, wordpress-symfony
- Language: PHP
- Homepage:
- Size: 36.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.MD
Awesome Lists containing this project
README
# Бандл для Symfony, обеспечивающий поддержку шаблонизатора Blade в связке Битрикс + Symfony (или Wordpress + Symfony).
На базе [https://github.com/arrilot/bitrix-blade](пакета)
## Установка
`composer require proklung/bitrix-blade-bundle`
## Использование
Заменяем шаблон компонента с template.php на template.blade и можно писать на Blade
Директива @include('path.to.view') модифицирована следующим образом:
Сначала view ищется относительно директории текущего шаблона компонента (там где лежит template.blade).
Если не view там не нашёлся, то он ищется относительно базовой директории (по умолчанию local/views, но может быть указана другая при вызове BladeProvider::register()).
#### Дополнительно
В контейнере появляются два сервиса рендеринга из шаблонов Blade:
- `symfony_blade.blade` - рендерер для Битрикса.
- `symfony_blade.blade_instance` - фреймворконезависимый рендерер (работает, например, в Wordpress).##### Методы:
Вернет ларавеловский View для указанного шаблона. Внутри него магический метод `__toString`, вызывающий рендерер.
```php
/**
* Получить View шаблона.
*
* @param string $file Blade шаблон.
* @param array $data Данные.
* @param array $mergeData Данные.
*
* @return View
*/
public function file(string $file, array $data = [], array $mergeData = []) : View;
```Можно динамически задать пути, где шаблонизатор будет искать шаблоны.
```php
/**
* Добавить базовый путь.
*
* @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` - 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`:
```yaml
symfony_blade:
baseViewPath: '%kernel.project_dir%/local/views'
cachePath: '%kernel.project_dir%/bitrix/cache/blade'
readonly: false
```
#### Очистка кэшаДля обеспечения высокой скорости работы Blade кэширует скомпилированные шаблоны в php файлы. В большинстве случаев чистить этот кэш самостоятельно потребности нет, потому что блейд сверяет время модификации файлов шаблонов и кэша и самостоятеьно инвалидирует этот кэш. Однако в некоторых случаях (например при добавлении новой пользовательской директивы), этот кэш всё-же надо сбросить. Делается это методом BladeProvider::clearCache()
Для Битрикса существует сервис `symfony_blade.clear_cache`, очищающий кэш в случае присутствия GET параметра clear_cache.
#### Некоторые моменты
Битрикс позволяет использовать сторонние шаблонизаторы только в шаблонах компонентов. Шаблоны сайтов только на php.
По понятным причинам наследованием шаблонов в полную силу воспользоваться не получится.
Традиционное расширение .blade.php использовать нельзя. Битрикс видя .php включает php движок.
Вместо $this в шаблоне следует использовать $template - например $template->setFrameMode(true);
Проверку `` прописывать в blade-шаблоне не нужно, она добавляется в скомпилированные view автоматически. Также вместе с этим выполняется и extract($arResult, EXTR_SKIP);
Чтобы языковой файл из шаблона подключился, его (этот языковой файл) надо назвать как обычно - template.php
#### Дополнительно
##### PhpStorm
Чтобы включить подсветку синтаксиса в PhpStorm для .blade файлов нужно добавить это расширение в Settings->Editor->File Types->Blade
Чтобы PhpStorm понимал и подсвечивалл должным образом пользовательские директивы из этого пакета их можно добавить в него. Делается это в Settings->Language & Frameworks->PHP->Blade->Directives