Создать новый пакет

Когда я генерирую новый пакет в symfony 2, у меня появляется эта ошибка, когда я запускаю проект в браузере:

ClassNotFoundException в строке 19 AppKernel.php: Попытка загрузить класс "TagBundle" из пространства имен "test\TagBundle". Вы забыли оператор use для test\TagBundle\TagBundle?

AppKernel.php:

<?php

    use Symfony\Component\HttpKernel\Kernel;
    use Symfony\Component\Config\Loader\LoaderInterface;

    class AppKernel extends Kernel
    {
        public function registerBundles()
        {
            $bundles = array(
                new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
                new Symfony\Bundle\SecurityBundle\SecurityBundle(),
                new Symfony\Bundle\TwigBundle\TwigBundle(),
                new Symfony\Bundle\MonologBundle\MonologBundle(),
                new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
                new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
                new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
                new AppBundle\AppBundle(),
                new test\TagBundle\TagBundle(),
            );

            if (in_array($this->getEnvironment(), array('dev', 'test'), true)) {
                $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
                $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
                $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
                $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
            }

            return $bundles;
        }

        public function registerContainerConfiguration(LoaderInterface $loader)
        {
            $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
        }
    }

composer.json:

{
        "name": "root/tagproject",
        "license": "proprietary",
        "type": "project",
        "autoload": {
            "psr-4": {
                "AppBundle\\": "src/AppBundle"
            },
            "classmap": [
                "app/AppKernel.php",
                "app/AppCache.php"
            ]
        },
        "autoload-dev": {
            "files": [
                "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php"
            ]
        },
        "require": {
            "php": ">=5.3.9",
            "doctrine/doctrine-bundle": "~1.4",
            "doctrine/orm": "^2.4.8",
            "incenteev/composer-parameter-handler": "~2.0",
            "sensio/distribution-bundle": "~4.0",
            "sensio/framework-extra-bundle": "^3.0.2",
            "symfony/monolog-bundle": "^3.0.2",
            "symfony/swiftmailer-bundle": "~2.3,>=2.3.10",
            "symfony/symfony": "2.8.*",
            "twig/twig": "^1.0||^2.0"
        },
        "require-dev": {
            "sensio/generator-bundle": "~3.0",
            "symfony/phpunit-bridge": "~2.7"
        },
        "scripts": {
            "symfony-scripts": [
                "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
            ],
            "post-install-cmd": [
                "@symfony-scripts"
            ],
            "post-update-cmd": [
                "@symfony-scripts"
            ]
        },
        "config": {
            "bin-dir": "bin",
            "sort-packages": true
        },
        "extra": {
            "symfony-app-dir": "app",
            "symfony-web-dir": "web",
            "symfony-assets-install": "relative",
            "incenteev-parameters": {
                "file": "app/config/parameters.yml"
            },
            "branch-alias": null
        }
    }

И в терминале Ubuntu у меня есть это сообщение:

Команде не удалось все настроить автоматически.
Вам нужно будет внести следующие изменения вручную.

  • Отредактируйте файл composer.json и зарегистрируйте пространство имен пакета в разделе "автозагрузка":

1 ответ

Решение

Обновите файл composer.json следующим образом. Замените "NewBundle" на имя вашего пакета.

"autoload": {
    "psr-4": {
        "AppBundle\\": "src/AppBundle",
        "NewBundle\\": "src/NewBundle"
    },
    "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},

Бег;

composer dumpautoload

Теперь вы можете запустить свой сервер.

Другие вопросы по тегам