My DependencyProvider for Spryker Yves does not setup dependencies

218 Views Asked by At

Spryker Kernel Exception Container does not contain the called "XXX" You can fix this by adding the key "XXX" to your "ModuleNameDependencyProvider"

ModuleNameDependencyProvider code:

<?php

use Pyz\Client\AddressAutocomplete\AddressAutocompleteClient;

class ModuleNameDependencyProvider extends AbstractBundleDependencyProvider
{
    public const MODULE_NAME_CLIENT = 'MODULE_NAME_CLIENT';

    /**
     * @param Container $container
     *
     * @return Container
     * @throws FrozenServiceException
     */
    public function provideServiceLayerDependencies(Container $container): Container
    {
        $container = $this->provideModuleNameClient($container);

        return $container;
    }

    /**
     * @throws FrozenServiceException
     */
    public function provideModuleNameClient(Container $container): Container
    {
        $container->set(static::MODULE_NAME_CLIENT, function (Container $container) {
            return new ModuleNameClient();
        });

        return $container;
    }
}
1

There are 1 best solutions below

0
Nikulin Vyacheslav On

In this case (for Yves) wrong setup dependencies method call. I should call provideDependencies(Container $container) instead of provideServiceLayerDependencies(Container $container).

For different layers should be used different parents classes and different methods to setup dependencies:

  • Yves Spryker\Yves\Kernel\AbstractBundleDependencyProvider;
  • Client Spryker\Client\Kernel\AbstractDependencyProvider;
  • Zed Spryker\Zed\Kernel\AbstractBundleDependencyProvider;
  • Service Spryker\Service\Kernel\AbstractBundleDependencyProvider;
  • Glue Spryker\Glue\Kernel\AbstractBundleDependencyProvider;

  • Yves provideDependencies(Container $container)
  • Client provideDependencies(Container $container)
  • Zed provideBusinessLayerDependencies(Container $container)
  • Service provideServiceDependencies(Container $container)
  • Glue provideDependencies(Container $container)

May be it will be changed in future: check vendors to be sure.