Bitrix Project + Symfony.

Overview

Bitrix Project + Symfony

Заготовка для 1C Bitrix проектов. На базе https://github.com/regiomedia/bitrix-project

Основное отличие: максимальное использование Symfony. Поддерживаются бандлы, сервис контейнер с полным функционалом фрэймворка (аннотации, auto wiring), роутинг, консоль и так далее.

От Битрикса остается админка, база, компоненты (где контейнер доступен через сервис-локатор). Все остальное пишется в максимально приближенной к Symfony манере.

Плюс всевозможный - используемый мною в реальных проектах - функционал (размещается в бандлах Symfony).

А также плоды всевозможных досужих экспериментов, оказавшихся полезными в работе.

Создание нового проекта

  • Создать папку нового проекта в OSPanel/domains и Клонировать эту базовую сборку

К примеру:

git clone proklung/bitrix-symfony-base.git ./
  • Настроить вебсервер для работы с директорией sites/s1 либо сделать симлинк вида

    /home/bitrix/www -> /home/bitrix/projectname/sites/s1

    (Настроить локальный домен в OpenServer со ссылкой на sites/s1)

Зависимости

  • Установить зависимости composer (backend):
composer install
  • Установить зависимости npm (frontend):
npm install

Bitrix

  • Удалить папку bitrix
  • Инициализировать submodule:
git submodule init
  • Запустить submodule (cклонируется bitrix):
git submodule update

Или настроить его иным способом (через git submodule ad).

Символьные ссылки

В директорию sites/s1 перенести публичные файлы сайта.

В виндовом терминале:

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) 
и [логгера Monolog](https://github.com/bitrix-expert/monolog-adapter)

### Миграции

- Установить [модуль миграций](https://github.com/arrilot/bitrix-migrations)

```sh
php migrator install
  • Запуск миграций
php migrator migrate

** Доустановить модуль Базовых Битрикс компонентов. в административном интефейсе:

Marketplace > Установленные решения > ББК (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 классическом веб-приложении, когда нет возможности использовать один "корневой" экземпляр 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

Далее необходимо настроить веб-сервер для работы с новым сайтом.

You might also like...
A restaurant website using PHP and MySQL. (A group project at Chandigarh University)

tasty-indeed-restaurant-website-php Description A restaurant website using PHP and MySQL for group project at Chandigarh University. Steps to setup Do

Batteries include Drupal project template with Redis and object storage for assets.

Mojo An opinionated Drupal build designed to run in a cloud native environment. This is a work in progress, see the TODO.md for initial tracking of it

BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the project website for more information.

BaiCloud-cms About BaiCloud-cms is a powerful open source CMS that allows you to create professional websites and scalable web applications. Visit the

A Laravel 4 CMS – WARNING: This project is no longer being developed because there are many good alternatives now.

This is the main larapress repository. Warning: This Application is under development and not yet production ready! Important Links Installation Contr

Simple Bootstrap Laravel CMS. Support Laravel 8.x Can integrate into any existing Laravel project.
Simple Bootstrap Laravel CMS. Support Laravel 8.x Can integrate into any existing Laravel project.

Simple Bootstrap Laravel CMS. Support Laravel 8.x Can integrate into any existing Laravel project. Only add few database tables with prefixes, not affect your existing database tables. Support Laravel 7.x & Laravel 6.x & Laravel 5.x & MySql & PostgreSql - Amila Laravel CMS

Laravel Craftsman CLI for easily crafting Laravel assets for any project (artisan make on steroids)
Laravel Craftsman CLI for easily crafting Laravel assets for any project (artisan make on steroids)

Laravel Craftsman Description Laravel Craftsman (written using the awesome Laravel-Zero CLI builder) provides a suite of crafting assets using a proje

There are errors that I can't solve in this project, I'm waiting for your help!

Laravel-Basic-CMS There are errors that I can't solve in this project, I'm waiting for your help! Migration artisan komutlarını terminalde çalıştırıke

Kirby: the CMS that adapts to any project, loved by developers and editors alike.
Kirby: the CMS that adapts to any project, loved by developers and editors alike.

Kirby: the CMS that adapts to any project, loved by developers and editors alike. The Starterkit is a full-blown Kirby installation with a lot of exam

Symfony React Blank is a blank symfony and react project, use this template to start your app using Symfony as an backend api and React as a frontend library.

Symfony React Blank Symfony React Blank is a blank symfony and react project, use this template to start your app using Symfony as an backend api and

Airbrake.io & Errbit integration for Symfony 3/4/5. This bundle plugs the Airbrake API client into Symfony project

AmiAirbrakeBundle Airbrake.io & Errbit integration for Symfony 3/4/5. This bundle plugs the Airbrake API client into Symfony project. Prerequisites Th

Roach-example-project - Example project to demonstrate how to use RoachPHP in a Laravel project.

Example repository to illustrate how to use roach-php/laravel in a Laravel app. Check app/Spiders/FussballdatenSpider.php for an example spider that c

[DEPRECATED -- Use Symfony instead] The PHP micro-framework based on the Symfony Components

Silex, a simple Web Framework WARNING: Silex is in maintenance mode only. Ends of life is set to June 2018. Read more on Symfony's blog. Silex is a PH

Bugsnag notifier for the Symfony PHP framework. Monitor and report errors in your Symfony apps.

Bugsnag exception reporter for Symfony The Bugsnag Notifier for Symfony gives you instant notification of errors and exceptions in your Symfony PHP ap

OpenAPI(v3) Validators for Symfony http-foundation, using `league/openapi-psr7-validator` and `symfony/psr-http-message-bridge`.

openapi-http-foundation-validator OpenAPI(v3) Validators for Symfony http-foundation, using league/openapi-psr7-validator and symfony/psr-http-message

Fork of Symfony Rate Limiter Component for Symfony 4

Rate Limiter Component Fork (Compatible with Symfony =4.4) The Rate Limiter component provides a Token Bucket implementation to rate limit input and

Enter-to-the-Matrix-with-Symfony-Console - Reproduction of the
Enter-to-the-Matrix-with-Symfony-Console - Reproduction of the "Matrix characterfall" effect with the Symfony Console component.

Enter to the Matrix (with Symfony Console) Reproduction of the "Matrix characterfall" effect with the Symfony Console component. Run Clone the project

Simple Symfony API-Platform Template which you can use to start to develop with symfony and api-platform

symfony-api-platform-skeleton Simple Template for Symfony API You can fork it and change the git remote to your Repo git remote set-url your-git-remo

Dockerise Symfony Application (Symfony 6 + Clean Architecture+ DDD+ CQRS + Docker + Xdebug + PHPUnit + Doctrine ORM + JWT Auth + Static analysis)

Symfony Dockerise Symfony Application Install Docker Install Docker Compose Docker PHP & Nginx Create Symfony Application Debugging Install Xdebug Con

Symfony 5.2 + api platform project with ELK stack + elastic FileBeats for the log management. All running in 7 docker containers: nginx, php 8, mysql, elastic search, logstash, kibana, fileBeats.

Symfony with ELK and Elastic FileBeats Stack Prerequisites: Make sure that docker and docker-compose are installed in your machine and available for y

Releases(2.3.4)
Owner
Fedy
Fedy
PHPDish is a powerful forum system written in PHP. It is based on the Symfony PHP Framework.

PHPDish 是一个基于Symfony框架开发的内容社区系统;得益于大量的前端以及后端的第三方类库的使用使得PHPDish有着高质量的代码,敏捷实现; 你可以使用composer或者直接下载本仓库进行程序的安装,注意切换到tag。 PHPDish 开发手册以及详细安装文档 Requirements

PHPDISH 227 Dec 8, 2022
Modern CMS with shop features based on fullstack symfony and sylius components

The enhavo CMS is a open source PHP project on top of the fullstack Symfony framework and uses awesome Sylius components to serve a very flexible soft

enhavo 80 Dec 14, 2022
PHPDish is a powerful forum system written in PHP. It is based on the Symfony PHP Framework.

PHPDish 是一个基于Symfony框架开发的内容社区系统;得益于大量的前端以及后端的第三方类库的使用使得PHPDish有着高质量的代码,敏捷实现; 你可以使用composer或者直接下载本仓库进行程序的安装,注意切换到tag。

PHPDISH 227 Dec 8, 2022
A flexible and fast Cms built with Symfony and Vuejs.

GreenCheap CMS A modular and lightweight CMS made with Symfony and Vuejs components GreenCheap works with PHP 8 version. In this case, lower versions

GreenCheap 57 Oct 29, 2022
An advanced yet user-friendly content management system, based on the full stack Symfony framework combined with a whole host of community bundles

An advanced yet user-friendly content management system, based on the full stack Symfony framework combined with a whole host of community bundles. It provides a full featured, multi-language CMS system with an innovative page and form assembling process, versioning, workflow, translation and media managers and much more.

Kunstmaan | Accenture Interactive 374 Dec 23, 2022
Sulu is an open-source content management platform based on the Symfony PHP framework

This repository is no longer the recommended way to start a sulu project. Please have a look at the documentation to find out how to start a new proje

Sulu CMS 623 Nov 12, 2022
Fork is an easy to use open source CMS using Symfony Components.

Installation Make sure you have composer installed. Run composer create-project forkcms/forkcms . in your document root. Browse to your website Follow

Fork CMS 1.1k Dec 8, 2022
True Multisite, Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS powered by PHP, Markdown, Twig, and Symfony

True Multisite, Modern, Crazy Fast, Ridiculously Easy and Amazingly Powerful Flat-File CMS powered by PHP, Markdown, Twig, and Symfony

null 4 Oct 28, 2022
This is a Hostel Management system project is created using PHP and MYSQL

Hostel-Managment-System-PHP This is a Hostel Management system project is created using PHP and MYSQL. Developed as a package for the subject Relation

Hari Ram 5 May 10, 2022
Bedrock is a modern WordPress stack that helps you get started with the best development tools and project structure.

WordPress boilerplate with modern development tools, easier configuration, and an improved folder structure

Roots 5.7k Jan 9, 2023