Как получить список пакетов в symfony2 / symfony3? - PullRequest
17 голосов
/ 03 апреля 2012

Я только начал использовать symfony и хотел бы получить список пакетов от конкретного поставщика, выполнить итерацию по ним и вызвать функцию $ bundle-> renderSomething () на каждом контроллере по умолчанию.

* 1002Во-первых, мне нужно получить список пакетов для итерации или для каждого объекта.Есть идеи, как лучше всего это сделать?

Ответы [ 5 ]

31 голосов
/ 29 декабря 2014

Самый простой способ сделать это в консоли и правильно выводить имена пакетов:

Symfony 2

php app/console config:dump-reference

Symfony 3

php bin/console config:dump-reference

Ключевым моментом здесь не является предоставление каких-либо опций или аргументов.В этом случае команда просто выводит все доступные пакеты:

Available registered bundles with their extension alias if available:
+------------------------------------+-----------------------------------+
| Bundle name                        | Extension alias                   |
+------------------------------------+-----------------------------------+
| FrameworkBundle                    | framework                         |
| SecurityBundle                     | security                          |
| TwigBundle                         | twig                              |
| MonologBundle                      | monolog                           |
| SwiftmailerBundle                  | swiftmailer                       |
| DoctrineBundle                     | doctrine                          |
| AsseticBundle                      | assetic                           |
| GearmanBundle                      | gearman                           |
| SMMemcacheBundle                   | sm_memcache                       |
| PrestaSitemapBundle                | presta_sitemap                    |
| DoctrineCacheBundle                | doctrine_cache                    |
| CybernoxAmazonWebServicesBundle    | cybernox_amazon_web_services      |
| FOSFacebookBundle                  | fos_facebook                      |
| HWIOAuthBundle                     | hwi_oauth                         |
| FkrSimplePieBundle                 | fkr_simple_pie                    |
| RMSPushNotificationsBundle         | rms_push_notifications            |
| RobertoTruToInlineStyleEmailBundle | roberto_tru_to_inline_style_email |
| InsomniaMaxMindGeoIpBundle         | insomnia_max_mind_geo_ip          |
| EWZRecaptchaBundle                 | ewz_recaptcha                     |
| MopaBootstrapBundle                | mopa_bootstrap                    |
| JanThomas89MailSafeBundle          | jan_thomas89_mail_safe            |
| WebProfilerBundle                  | web_profiler                      |
| SensioDistributionBundle           | sensio_distribution               |
| SensioGeneratorBundle              |                                   |
+------------------------------------+-----------------------------------+
14 голосов
/ 03 апреля 2012

Если у вас есть объект container, вы можете получить массив включенных пакетов по $this->container->getParameter('kernel.bundles');

5 голосов
/ 03 апреля 2012
  1. Вы можете определить статическую функцию в каждом пакете.Пример: YourBundle::yourStaticFunction();
  2. Используйте $this->container->getParameter('kernel.bundles'), чтобы получить список пакетов.Это только возвращает имена классов комплекта вместо объекта Bundle.Просмотрите каждый пакет, проверьте, имеет ли пакет функцию yourStaticFunction(), Подсказка: используйте method_exists().Если метод существует, вызовите ::yourStaticFunction();
3 голосов
/ 21 сентября 2013

В консоли вы можете использовать php app/console container:debug --parameter=kernel.bundles

1 голос
/ 18 января 2016

Если вы хотите вызвать нестатический метод зарегистрированного объекта пакета ( не класс ), тогда вы можете сделать следующее:

$kernel = $this->container->get('kernel');
$bundles = $kernel->getBundles();
$bundles['YourBundleName']->someMethod();

Где 'YourBundleName' - имя вашего пакета, которое вы можете получить, позвонив с консоли:

php app/console config:dump-reference
...