proklung / bitrix-symfony-base.git
使用 Symfony 集成的 Bitrix 构建
Requires
- arrilot/bitrix-migrations: dev-master
- arrilot/bitrix-models: dev-master
- bitrix-expert/bbc: ^1.0
- illuminate/support: ^6.0 || ^7.0
- maximaster/tools.twig: dev-master
- proklung/bitrix-core-symfony: ^1.4.1
- proklung/bitrix-custom-properties-bundle: ^1.1
- proklung/bitrix-iblock-element-validator-bundle: ^1.0
- proklung/bitrix-twig-bundle: ^1.0
- proklung/bitrix-webform-bundle: ^1.0
- proklung/bitrixstaticpagemakerbundle: ^1.0
- proklung/bitrixsymfonyrouterbundle: ^1.4
- proklung/core-argument-resolvers-bundle: ^1.1
- proklung/core-framework-extension-bundle: ^1.8
- proklung/db-command: ^1.0
- proklung/facade-bundle: ^1.0
- proklung/framework-tools-bundle: ^1.5
- proklung/jedi-light: ^1.0
- proklung/pipeline-symfony: ^1.0
- proklung/twig-extensions-bundle: ^1.6
- psr/container: 1.0.*
- symfony/dotenv: ^5.2
- symfony/monolog-bundle: ^3.7
Requires (Dev)
- ergebnis/phpstan-rules: ^0.15.3 || ^1
- icanhazstring/composer-unused: ^0.7.5
- mmucklo/krumo: ^0.6.0
- phpstan/phpstan-strict-rules: ^0.12.7 || ^1
- proklung/bitrix.module.generator: ^1.0
- proklung/phpunit-testing-tools: ^1.5
- proklung/symfony-maker-bundle: ^1.0
- slam/phpstan-extensions: ^5.1
- squizlabs/php_codesniffer: ^3
- symfony/maker-bundle: ^1.33
- symfony/var-dumper: ^4.4 || ^5.0
- dev-master
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.0
- 1.9.0
- 1.8.9
- 1.8.8
- 1.8.7
- 1.8.6
- 1.8.5
- 1.8.4
- 1.8.3
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.5
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.7
- 1.0.6
- 1.0.5
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0
This package is auto-updated.
Last update: 2024-09-27 17:40:29 UTC
README
为 1C Bitrix 项目准备的模板。基于 https://github.com/regiomedia/bitrix-project
主要区别:最大程度使用 Symfony。支持捆绑、服务容器具有完整框架功能(注解、自动装配)、路由、控制台等。
保留 Bitrix 的后台、数据库、组件(容器可通过服务定位器访问)。其余部分以尽可能接近 Symfony 的方式编写。
此外,还有我在实际项目中使用的各种功能(放置在 Symfony 捆绑中)。
以及各种娱乐实验的成果,这些实验在工作中证明是有用的。
创建新项目
- 在 OSPanel/domains 中创建新项目的文件夹,并克隆此基本构建
例如
git clone proklung/bitrix-symfony-base.git ./
-
配置 Web 服务器以使用目录
sites/s1
或创建类似/home/bitrix/www -> /home/bitrix/projectname/sites/s1
(在 OpenServer 中配置本地域名并指向 sites/s1)
依赖项
- 安装 composer(后端)依赖项
composer install
- 安装 npm(前端)依赖项
npm install
Bitrix
- 删除 bitrix 文件夹
- 初始化子模块
git submodule init
- 启动子模块(将克隆 bitrix)
git submodule update
或以其他方式配置它(通过 git submodule ad)。
重要
在此过程之前,更新 include.php
在 environments/*/bitrix/modules/main
中的内容,使用来自子模块或以其他方式安装的 Bitrix 的最新版本。
之后,建议再次执行 composer update
以更新 Bitrix 模块。
符号链接
将网站公共文件移到 sites/s1
目录。
在 Windows 命令提示符中
mklink "local" "../../local" /j mklink "bitrix" "../../bitrix" /j mklink "upload" "../../upload" /j
数据库和环境
-
在 localhost 上创建数据库
-
从 bitrix/backup 展开数据库备份
-
创建
.env
文件
touch .env
-
根据
.env.example
文件填写其数据 -
展开环境
php bin/jedi env:init default Эта команда скопирует в директорию `bitrix` системные файлы настроек сконфигурированные для работы с [переменными окружения](https://github.com/vlucas/phpdotenv), а также настройки [шаблонизатора Twig](https://github.com/maximaster/tools.twig). ### Миграции - Установить [модуль миграций](https://github.com/arrilot/bitrix-migrations) ```sh php migrator install
- 运行迁移
php migrator migrate
** 在管理界面中安装 基本 Bitrix 组件 模块。
Marketplace > 已安装解决方案 > BБК (bex.bbc)
“构建”前端
npm run encore -- dev
后端
Composer 和 PSR-4 自动加载来自 local/classes
目录的类。命名空间 \Local\
检查通过命令执行(这是使用预置参数运行 phpcs
实用程序)
composer run lint:php
此外,还可以使用 phpcbf
实用程序修复部分发现的问题
composer run fix:php
前端
作为“构建器”,使用 symfony/webpack-encore。
默认情况下,前端文件应位于 local/assets
目录。
这可以在配置文件 webpack.config.js 中重定义
主要命令
npm run encore -- dev # запустить сборку для разработчика один раз npm run encore -- dev --watch # запустить сборку для разработчика в режиме слежения за файлами npm run encore -- production # запустить сборку для продакшена
Vue
微型模块 vueInvoker 用于在页面上初始化 Vue 组件。它简化了在无法使用单个“根”实例 Vue
时(如单页应用程序中那样)在经典 Web 应用程序中使用 Vue。
用法
输出组件占位符
<div class="vue-component" data-component="DemoApp" data-initial='{"test": "data"}'></div>
创建相应的 Vue 组件(在 local/assets/scripts/vue/components/
目录中)
<template> <div class="demo-app"> {{ hello }} {{ initial.test }} </div> </template> <script> export default { data() { return { hello: 'World', }; }, props: ['initial'], }; </script>
将其添加到 local/assets/scripts/vue/collection.js
集合中
import DemoApp from './components/DemoApp.vue'; export default { DemoApp, };
多站点
项目结构类似于预先配置的多站点在不同域名上,每个站点有独立的目录。核心文件通过相对符号链接进行连接。要添加新站点,需要在./sites/
下创建新目录(最好目录名与新的站点代码一致)。然后在该目录中添加必要的文件和目录的链接。
mkdir sites/s2 # создать директорию для дополнительного сайта
cd sites/s2 # перейти в нее
mklink "local" "../../local" /j
mklink "bitrix" "../../bitrix" /j
mklink "upload" "../../upload" /j
接下来需要配置Web服务器以支持新站点。
Composer 脚本
附上了一些示例脚本,这些脚本在post-update
和post-install
事件下运行。
-
Local\ComposerScript\RunMigrationsHandler
- 运行迁移。 -
Local\ComposerScript\CacheWarmerHandler
- 清理和预热缓存。
在composer.json
文件的scripts
部分添加
"scripts": { "post-update-cmd": [ "Local\\ComposerScript\\RunMigrationsHandler::doInstall", "Local\\ComposerScript\\CacheWarmerHandler::doInstall" ], "post-install-cmd": [ "Local\\ComposerScript\\RunMigrationsHandler::doInstall", "Local\\ComposerScript\\CacheWarmerHandler::doInstall" ], "cache:warm": "Local\\ComposerScript\\CacheWarmerHandler::doInstall", "migrations:run": "Local\\ComposerScript\\RunMigrationsHandler::doInstall" },
命令
composer cache:warm
和
composer migrations:run
其他内容
- 不得不将包
psr/container
锁定在版本1.0上。否则,由于接口不匹配,会安装1.1.1(根据Symfony DI的要求),导致结构崩溃。
后果是DI组件目前是5.2版本,而不是最新的5.3版本。