{"id":18513734,"url":"https://github.com/proklung/bitrix-symfony-base","last_synced_at":"2025-04-09T06:33:49.019Z","repository":{"id":57045119,"uuid":"354789353","full_name":"ProklUng/bitrix-symfony-base","owner":"ProklUng","description":"Bitrix Project + Symfony.","archived":false,"fork":false,"pushed_at":"2022-01-27T11:53:29.000Z","size":5000,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-23T07:34:07.574Z","etag":null,"topics":["bitrix","bitrix-cms","bitrix-symfony","symfony"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ProklUng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-04-05T09:57:23.000Z","updated_at":"2024-08-22T11:09:39.000Z","dependencies_parsed_at":"2022-08-24T04:11:11.564Z","dependency_job_id":null,"html_url":"https://github.com/ProklUng/bitrix-symfony-base","commit_stats":null,"previous_names":[],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2Fbitrix-symfony-base","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2Fbitrix-symfony-base/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2Fbitrix-symfony-base/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ProklUng%2Fbitrix-symfony-base/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ProklUng","download_url":"https://codeload.github.com/ProklUng/bitrix-symfony-base/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247993488,"owners_count":21030041,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bitrix","bitrix-cms","bitrix-symfony","symfony"],"created_at":"2024-11-06T15:40:26.426Z","updated_at":"2025-04-09T06:33:43.997Z","avatar_url":"https://github.com/ProklUng.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bitrix Project + Symfony\n\nЗаготовка для 1C Bitrix проектов. На базе https://github.com/regiomedia/bitrix-project\n\nОсновное отличие: максимальное использование Symfony. Поддерживаются бандлы, сервис контейнер с\nполным функционалом фрэймворка (аннотации, auto wiring), роутинг, консоль и так далее. \n\nОт Битрикса остается админка, база, компоненты (где контейнер доступен через сервис-локатор). \nВсе остальное пишется в максимально приближенной к Symfony манере.\n\nПлюс всевозможный - используемый мною в реальных проектах - функционал (размещается в бандлах Symfony).\n\nА также плоды всевозможных досужих экспериментов, оказавшихся полезными в работе.\n\n## Создание нового проекта\n\n- Создать папку нового проекта в OSPanel/domains и Клонировать эту базовую сборку\n\nК примеру:\n```sh\ngit clone proklung/bitrix-symfony-base.git ./\n```\n\n- Настроить вебсервер для работы с директорией `sites/s1` либо сделать симлинк вида\n  \n  ```sh\n  /home/bitrix/www -\u003e /home/bitrix/projectname/sites/s1\n  ```\n  (Настроить локальный домен в OpenServer со ссылкой на sites/s1)\n\n### Зависимости\n\n- Установить зависимости composer (backend):\n```sh\ncomposer install\n```\n\n- Установить зависимости npm (frontend):\n```sh\nnpm install\n```\n\n### Bitrix\n\n- Удалить папку bitrix\n- Инициализировать submodule:\n```sh\ngit submodule init\n```\n\n- Запустить submodule (cклонируется bitrix):\n```sh\ngit submodule update\n```\n\nИли настроить его иным способом (через git submodule ad).\n\n#### ВАЖНО\n\nПеред этой процедурой обновить `include.php` в `environments/*/bitrix/modules/main`, на актуальный из сабмодуля \nили устанавливаемого иным способом Битрикса.\n\nПосле этого рекомендуется сделать еще разок `composer update` дабы подтянулись битриксовые модули.\n\n### Символьные ссылки\n\nВ директорию `sites/s1` перенести публичные файлы сайта.\n\nВ виндовом терминале:\n\n```sh\nmklink \"local\" \"../../local\" /j\nmklink \"bitrix\" \"../../bitrix\" /j\nmklink \"upload\" \"../../upload\" /j\n```\n\n### База данных и окружение\n\n- Создать базу данных на localhost\n\n- Развернуть бэкап базы из bitrix/backup\n\n- Создать файл `.env` \n\n```sh\ntouch .env\n```\n\n- Заполнить его данными в соответствии с файлом-образцом `.env.example`\n\n- Развернуть окружение\n\n```sh\nphp bin/jedi env:init default\n\nЭта команда скопирует в директорию `bitrix` системные файлы настроек сконфигурированные для работы с \n[переменными окружения](https://github.com/vlucas/phpdotenv), а также настройки \n[шаблонизатора Twig](https://github.com/maximaster/tools.twig). \n\n### Миграции\n\n- Установить [модуль миграций](https://github.com/arrilot/bitrix-migrations)\n\n```sh\nphp migrator install\n```\n\n- Запуск миграций\n\n```sh\nphp migrator migrate\n```\n\n** Доустановить модуль [Базовых Битрикс компонентов](https://github.com/bitrix-expert/bbc). в административном интефейсе: \n\n`Marketplace \u003e Установленные решения \u003e ББК (bex.bbc)`\n\n\n### \"Собрать\" фронтенд\n\n```sh\nnpm run encore -- dev\n```\n\n## Бэкенд\n\nComposer и PSR-4 автозагрузка классов из директории `local/classes`. Пространство имен `\\Local\\ `\n\nПроверка осуществляется командой (это запуск утилиты `phpcs` с предустановленными параметрами) \n\n```sh\ncomposer run lint:php\n```\n\nТакже есть возможность исправить часть обнаруженных ошибок утилитой `phpcbf`\n\n```sh\ncomposer run fix:php\n```\n\n## Фронтенд\n\nВ качестве \"сборщика\" изпользуется [symfony/webpack-encore](https://github.com/symfony/webpack-encore). \n\nПо-умолчанию файлы фронтенда должны располагаться в директории `local/assets`.\n\nЭто можно переопределить в файле конфигурации [webpack.config.js](./webpack.config.js) \n\nОсновные команды:\n\n```sh\nnpm run encore -- dev          # запустить сборку для разработчика один раз\nnpm run encore -- dev --watch  # запустить сборку для разработчика в режиме слежения за файлами\nnpm run encore -- production   # запустить сборку для продакшена\n```\n    \n#### Vue\n\nМини-модуль [vueInvoker](local/assets/scripts/util/vueInvoker.js) \nпредназначен для инициализации Vue компонентов на странице.\nОн упрощает использование Vue классическом веб-приложении, когда нет возможности \nиспользовать один \"корневой\" экземпляр `Vue` (Как, например, это устроено в одностраничных приложениях).\n\n#### Использование:\n\nВывести на страницу элемент-плейсхолдер для компонента:\n\n```html\n\u003cdiv class=\"vue-component\" data-component=\"DemoApp\" data-initial='{\"test\": \"data\"}'\u003e\u003c/div\u003e\n```\n\nСоздать соответствущий Vue-компонент (в директории `local/assets/scripts/vue/components/`:\n\n\n```html\n\u003ctemplate\u003e\n    \u003cdiv class=\"demo-app\"\u003e\n        {{ hello }}\n\n        {{ initial.test }}\n\n    \u003c/div\u003e\n\u003c/template\u003e\n\n\u003cscript\u003e\n    export default {\n      data() {\n        return {\n          hello: 'World',\n        };\n      },\n      props: ['initial'],\n    };\n\u003c/script\u003e\n```\n\nДобавить его в Коллекцию `local/assets/scripts/vue/collection.js`:\n\n```js\nimport DemoApp from './components/DemoApp.vue';\n\nexport default {\n  DemoApp,\n};\n```\n\n## Многосайтовость\n\nСтруктура проекта напоминает _заранее_ настроенную \n[многосайтовость на разных доменах](https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=103\u0026LESSON_ID=287) \nс отдельными директориями для каждого сайта. Файлы ядра подключаются _относительными_ символическими ссылками.\nДля добавления нового сайта нужно создать новую директорю в `./sites/`(лучше всего если ее название будет \nсоответствовать коду нового сайта). И добавить в нее ссылки на необходимые файлы и директории:\n\n```\nmkdir sites/s2             # создать директорию для дополнительного сайта\ncd sites/s2                # перейти в нее\nmklink \"local\" \"../../local\" /j\nmklink \"bitrix\" \"../../bitrix\" /j\nmklink \"upload\" \"../../upload\" /j\n\n``` \n\nДалее необходимо настроить веб-сервер для работы с новым сайтом.\n\n## Composer scripts\n\nПриложено пару примеров скриптов для composer, запускающимся по событиям `post-update` и `post-install`.\n\n- `Local\\ComposerScript\\RunMigrationsHandler` - запускает миграции.\n   \n- `Local\\ComposerScript\\CacheWarmerHandler` - убивает и прогревает кэш.\n\nДобавить в секцию `scripts` файла `composer.json`:\n\n```json\n  \"scripts\": {\n    \"post-update-cmd\": [\n      \"Local\\\\ComposerScript\\\\RunMigrationsHandler::doInstall\",\n      \"Local\\\\ComposerScript\\\\CacheWarmerHandler::doInstall\"\n    ],\n    \"post-install-cmd\": [\n      \"Local\\\\ComposerScript\\\\RunMigrationsHandler::doInstall\",\n      \"Local\\\\ComposerScript\\\\CacheWarmerHandler::doInstall\"\n    ],\n    \"cache:warm\": \"Local\\\\ComposerScript\\\\CacheWarmerHandler::doInstall\",\n    \"migrations:run\": \"Local\\\\ComposerScript\\\\RunMigrationsHandler::doInstall\"\n  },\n```\n\nПоявятся команды:\n\n```sh\ncomposer cache:warm\n```\n\nи\n\n```sh\ncomposer migrations:run\n```\n\n## Прочее\n\n- Пришлось залочить пакет `psr/container` на версию 1.0. Без этого ставился 1.1.1 (по запросу Symfony DI) \nи конструкция падала из-за несоответствия интерфейсов.\n\nПоследствия: DI компонент пока версии 5.2, а не актуальной 5.3.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproklung%2Fbitrix-symfony-base","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproklung%2Fbitrix-symfony-base","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproklung%2Fbitrix-symfony-base/lists"}