jgrygierek / SonataBatchEntityImportBundle

Importing entities with preview and edit features for Sonata Admin.
MIT License
8 stars 3 forks source link

OutOfBoundsException in AutoConfigureCompilerPass #43

Closed zeromodule closed 1 year ago

zeromodule commented 1 year ago

Hi! Great idea, thank you for your work.

I'm using v2.4 with Symfony 4.4 + "sonata-project/admin-bundle": "^v4" and have following problem:

\JG\SonataBatchEntityImportBundle\DependencyInjection\Compiler\AutoConfigureCompilerPass throws exception in method isDefaultControllerUsed:

Symfony\Component\DependencyInjection\Exception\OutOfBoundsException:
The argument "2" doesn't exist.

  at /var/www/dist/vendor/symfony/dependency-injection/Definition.php:341
  at Symfony\Component\DependencyInjection\Definition->getArgument(2)
     (/var/www/dist/vendor/symfony/dependency-injection/ChildDefinition.php:78)
  at Symfony\Component\DependencyInjection\ChildDefinition->getArgument(2)
     (/var/www/dist/vendor/jgrygierek/sonata-batch-entity-import-bundle/src/DependencyInjection/Compiler/AutoConfigureCompilerPass.php:40)
  at JG\SonataBatchEntityImportBundle\DependencyInjection\Compiler\AutoConfigureCompilerPass->isDefaultControllerUsed(object(ChildDefinition))
     (/var/www/dist/vendor/jgrygierek/sonata-batch-entity-import-bundle/src/DependencyInjection/Compiler/AutoConfigureCompilerPass.php:35)
  at JG\SonataBatchEntityImportBundle\DependencyInjection\Compiler\AutoConfigureCompilerPass->canDefaultControllerBeReplaced(object(ChildDefinition))
     (/var/www/dist/vendor/jgrygierek/sonata-batch-entity-import-bundle/src/DependencyInjection/Compiler/AutoConfigureCompilerPass.php:28)
  at JG\SonataBatchEntityImportBundle\DependencyInjection\Compiler\AutoConfigureCompilerPass->replaceDefaultControllerInAdminServices(object(ChildDefinition))
     (/var/www/dist/vendor/jgrygierek/sonata-batch-entity-import-bundle/src/DependencyInjection/Compiler/AutoConfigureCompilerPass.php:22)
  at JG\SonataBatchEntityImportBundle\DependencyInjection\Compiler\AutoConfigureCompilerPass->process(object(ContainerBuilder))
     (/var/www/dist/vendor/symfony/dependency-injection/Compiler/Compiler.php:94)
  at Symfony\Component\DependencyInjection\Compiler\Compiler->compile(object(ContainerBuilder))
     (/var/www/dist/vendor/symfony/dependency-injection/ContainerBuilder.php:762)
  at Symfony\Component\DependencyInjection\ContainerBuilder->compile()
     (/var/www/dist/vendor/symfony/http-kernel/Kernel.php:594)
  at Symfony\Component\HttpKernel\Kernel->initializeContainer()
     (/var/www/dist/vendor/symfony/http-kernel/Kernel.php:136)
  at Symfony\Component\HttpKernel\Kernel->boot()
     (/var/www/dist/vendor/symfony/http-kernel/Kernel.php:196)
  at Symfony\Component\HttpKernel\Kernel->handle(object(Request))
     (/var/www/dist/public/index.php:25)
  at require('/var/www/dist/public/index.php')
     (/var/www/dist/web/app_dev.php:5)                

My admin class looks like this:

use JG\SonataBatchEntityImportBundle\Admin\AdminWithImportInterface;
use Sonata\AdminBundle\Admin\AbstractAdmin;

class MyImportAdmin extends AbstractAdmin implements AdminWithImportInterface
{
    public function getImportConfigurationClassName(): string
    {
        return MyImportConfiguration::class;
    }
}
  admin.coin_source_type_import:
    class: My\Admin\MyImportAdmin
    tags:
      - { name: sonata.admin, manager_type: orm, label: My Import Label, model_class: 'My\ModelClass'}

It looks like admin's definitions doesn't have any argument, so $definition->getArgument(self::CONTROLLER_ARGUMENT_INDEX) throws exception described above.

jgrygierek commented 1 year ago

@zeromodule can you check version 2.4.1?