Как удалить пакет

Как удалить пакет

1. Отменитере регистрацию пакета в AppKernel

Чтобы отсоедиить пакет от фреймворка, вам нужно удалить его из метода AppKernel::registerBundles(). Пакет будет скорее всего найден в объявлении массива $bundles, или добавлен в него в более позднем утверждении, если пакет зарегистрирован только в окружении разработки:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Acme\DemoBundle\AcmeDemoBundle(),
        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            // прокомментируйте или удалите эту строку:
            // $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
            // ...
        }
    }
}

2. Удалите конфигурацию пакета

Теперь, когда Symfony не знает о пакете, вам нужно удалить любую конфигурацию и конфигурацию маршрутизации внутри каталога app/config, ссылающегося на пакет.

2.1 Удалите маршрутизацию пакета

Некоторые пакеты требуют, чтобы вы импортировали конфигурацию маршрутизации. Проверьте ссылки на пакет в app/config/routing.yml и app/config/routing_dev.yml. Если вы их найдёте, полностью удалите их.

2.2 Удалите конфигурацию пакета

Некоторые пакеты содержат конфигурацию в одном из файлов app/config/config*.yml. Убедитесь в том, что вы удалили связанную конфигурацию из этих файлов. Вы можете быстро найти конфигурацию пакета, выполнив поиск строки acme_demo (или любого другого имени пакета, например, fos_user для FOSUserBundle) в файлах конфигурации.

3. Удалите пакет из файловой системы

Теперь, когда вы удалили каждую ссылку на пакет в вашем приложеии, вам стоит удалить пакет из файловой системы. Пакет будет находиться в src/, например, в каталоге src/Acme/DemoBundle. Вам стоит удалить этот каталог и любые родительские каталоги, которые теперь пусты (например, src/Acme/).

Tip

Если вы не знаете расположение пакета, вы можете использовать метод getPath(), чтобы получить путь пакета:

1
2
dump($this->container->get('kernel')->getBundle('AcmeDemoBundle')->getPath());
die();

3.1 Удалите ресурсы пакета

Удалите ресурсы пакета в каталоге web/ (например, web/bundles/acmedemo для AcmeDemoBundle).

4. Удалите интегрирование с другими пакетами

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

Tip

Если один пакет зависит от другого, то в большинстве случаев это означает, что он использует некоторые сервисы из пакета. Поиск строки дополнительного имени пакета может помочь вам найти их (например, acme_demo для пакетов, зависящих от AcmeDemoBundle).

Tip

Если сторонний пакет зависит от другого пакета, вы можете найти этот пакет, упомянутый в файле composer.json, включённый в каталог пакета.

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.