Как создать новый бандл для OroCRM (Oro Platform)?

Это первая статья из цикла переводов «The Oro Cookbook».

Новый бандл может быть создан двумя способами: вручную или автоматически при помощи стандартной консольной команды для Symfony2.

Создание бандла вручную

Первым делом необходимо будет указать имя и пространство имен для вашего бандла. У Symfony наилучший подход для распределения структуры и имени бандла, мы рекомендуем придерживаться данного подхода и использовать его.

Предположим что мы хотим создать AcmeNewBundle и связать его с пространством имен Acme\Bundle\NewBundle в каталоге /src. Мы должны создать соответствующую структуру каталогов и добавить файл следующего содержания:

<?php  
// src/Acme/Bundle/NewBundle/AcmeNewBundle.php
namespace Acme\Bundle\NewBundle;  
use Symfony\Component\HttpKernel\Bundle\Bundle;  
class AcmeNewBundle extends Bundle  
{
}

В принципе, это обычный Symfony бандл.Единственное отличие заключается в способе подключения (смотрим «Включение бандла»).

Создание бандлов автоматический

Новый бандл можно сгенерировать используя команду generate:bundle для Symfony.

user@host:/var/www/vhosts/platform-application$ php app/console generate:bundle  
Bundle namespace: Acme/Bundle/NewBundle  
Bundle name [AcmeNewBundle]:  
Target directory [/var/www/vhosts/platform-application/src]:  
Configuration format (yml, xml, php, or annotation): yml  
Do you want to generate the whole directory structure [no]?  
Do you confirm generation [yes]?

Generating the bundle code: OK  
Checking that the bundle is autoloaded: OK

Confirm automatic update of your Kernel [yes]? no  
Enabling the bundle inside the Kernel: FAILED  
Confirm automatic update of the Routing [yes]? no  
Importing the bundle routing resource: FAILED  

Важно! Не обновляйте ядро и роутер! – OroPlatform использует собственный механизм для этого, подробнее описано в раздере «Включение бандла» и последующих статьях.

Включение бандла

Теперь у вас есть все необходимые файлы для того, чтобы включить ваш новый бандл. Для этого необходимо:

  1. Создайте файл с именем: Resources/config/oro/bundles.yml содержащий:

  2. # src/Acme/Bundle/NewBundle/Resources/config/oro/bundles.yml
    bundles:  
     - Acme\Bundle\NewBundle\AcmeNewBundle
    
    Этот файл содержит список бандлов для регистрации — все эти файлы будут автоматически проанализированы для автоматической загрузки необходимых пакетов.
  3. Очистите системный кэш используя команду cache:clear:

user@host:/var/www/vhosts/platform-application  
$ php app/console cache:clear

Если вы работаете в production используйте параметр –env=prod.