首页 文章

生成新的Bundle

提问于
浏览
-1

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

AppKernel.php第19行中的ClassNotFoundException:尝试从命名空间“test \ TagBundle”加载类“TagBundle” . 您是否忘记了“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文件并在"autoload"部分注册bundle命名空间:

1 回答

  • 1

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

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

    运行;

    composer dumpautoload
    

    您现在可以启动服务器了 .

相关问题