如何在Symfony3中自动生成一个包?

时间:2017-08-02 09:54:35

标签: php symfony bundle auto-generate

我已尝试使用官方网站上的说明{... 3}}在Symfony3中自动生成捆绑包,但失败了。

我在项目中创建了一个目录\src\TestBundle,其中包含一个文件TestBundle.php。我从Bundle扩展了我的类TestBundle并在类声明之前添加了use Symfony\Component\HttpKernel\Bundle\Bundle;行。

我将新的包名称添加到AppKernel.php中的包列表中。

最后,当我执行$ php bin/console generate:bundle --namespace=TestBundle时,我收到此错误:PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "TestBundle" from namespace "TestBundle".

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

如果您启动此命令:

php bin/console generate:bundle --namespace=TestBundle

Symfony为您创建Bundle,您无需创建文件并将其添加到AppKernel文件中。

尝试删除所有文件和有关TestBundle的引用,并且在启动后只显示命令,Symfony将为您创建并注册Bundle。

相反,我想要创建手动thos文件,您需要创建目录\src\TestBundle并在文件TestBundle.php内。 需要将它注册到AppKernel后。 在您需要告诉编写者加载该包之后,如果尚未完成,请在autoload内使用composer.json的此配置

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

最后在你的控制台中启动命令:

composer dump-autoload