Concrete5 5.7: использование кросс-пакета ServiceProvider

Я переношу старый код на 5.7, и у меня возникает странная проблема, когда речь идет о помощниках. Я работаю с двумя пакетами – назовем их A и B. Пакет A реализует ServiceProvider. Я хотел бы использовать его в контроллере в пакете B, но он, похоже, не может найти его должным образом. Я настраиваю его в функции install() пакета A, следующим образом

 $providers = Config::get('providers'); if (!$providers) { $providers = array('group_membership' => '\Concrete\Package\A\Src\GroupMembership\GroupMembershipProvider'); } else { $providers['group_membership'] = '\Concrete\Package\A\Src\GroupMembership\GroupMembershipProvider'; } Config::set('providers', $providers); 

И в самом ServiceProvider я привязываю его соответственно;

 <?php namespace Concrete\Package\A\Src\GroupMembership; use \Concrete\Core\Foundation\Service\Provider as ServiceProvider; class GroupMembershipProvider extends ServiceProvider { public function register() { $this->app->bind('helper/group_membership', 'Concrete\Package\A\Src\GroupMembership\GroupMembershipProvider'); } } 

Затем, когда я хочу использовать в пакете A, это работает отлично:

 $helper = Core::make('helper/group_membership'); 

Но когда я делаю это в пакете B, он говорит мне:

 Class helper/group_membership does not exist 

Что я мог сделать, кроме объединения двух пакетов? Что может быть причиной этого?

    Провайдеры не могут быть зарегистрированы так, потому что мы потребляем этот способ ввода конфигурации до загрузки пакетов .

    Правильный способ регистрации пакета – создать экземпляр нового \Concrete\Core\Foundation\Service\ProviderList и использовать метод registerProvider .

    Вот хороший пример того, как это сделать.

     // Register our service provider $list = new ProviderList(\Core::getFacadeRoot()); $list->registerProvider('Concrete\\Package\\LegacySample\\Libraries\\ServiceProvider');