生成新的 Bundle

generate new Bundle

当我在 symfony 2 中生成新的 Bundle 时,当我在浏览器中启动项目时出现此错误:

ClassNotFoundException in AppKernel.php line 19: Attempted to load class "TagBundle" from namespace "test\TagBundle". Did you forget a "use" statement for "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 我收到了这条消息:

The command was not able to configure everything automatically.
You'll need to make the following changes manually.

像这样更新您的 composer.json 文件....将 "NewBundle" 替换为您的包的名称。

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

运行;

composer dumpautoload

您现在可以启动您的服务器了。