3

在我的 symfony 2 项目中,我有一个捆绑包

src/Cinergy/Bundle/PeopleServiceBundle

现在我想基于一个学说实体生成一个 CRUD 控制器,但我总是无法为实体参数输入正确的字符串。

我试过这样的事情:

php app/console generate:doctrine:crud --entity=Cinergy/Bundle/PeopleServiceBundle:Group

或者

php app/console generate:doctrine:crud --entity=@PeopleServiceBundle:Group

它们都返回错误,例如:

[Doctrine\ORM\ORMException]                             
Unknown Entity namespace alias '@PeopleServiceBundle'.

参数的正确语法是--entity什么?还是毕竟缺少了什么?

这是目录结构现在的样子:

src/Cinergy/Bundle/PeopleServiceBundle/
├── Controller
│   ├── GroupController.php
│   └── PersonController.php
├── DependencyInjection
│   ├── Configuration.php
│   └── PeopleServiceExtension.php
├── PeopleServiceBundle.php
├── Resources
│   ├── config
│   │   ├── routing.yml
│   │   └── services.yml
│   ├── doc
│   │   └── index.rst
│   ├── public
│   │   ├── css
│   │   ├── images
│   │   └── js
│   ├── translations
│   │   └── messages.fr.xliff
│   └── views
│       └── Default
│           └── index.html.twig
└── Tests
    └── Controller
        ├── GroupControllerTest.php
        └── PersonControllerTest.php
4

6 回答 6

9

毕竟,我必须先创建实体,然后才能为其创建 CRUD 控制器。当然,这是有道理的。不幸的是,Sensio Generator Bundle 文档确实以相反的顺序列出了将我推向错误方向的操作。

这意味着正确的顺序是

  1. 生成新的捆绑骨架
  2. 生成新的 Doctrine 实体存根
  3. 基于 Doctrine 实体生成 CRUD 控制器
于 2012-08-28T06:01:48.927 回答
2

首先,您需要将您的捆绑包注册到您的AppKernel.

然后只需运行以下命令。
不要放在@包名之前

php app/console generate:doctrine:crud --entity=PeopleServiceBundle:Group

更多关于基于 Doctrine 实体生成 CRUD 控制器的信息

于 2012-08-27T15:49:26.047 回答
1

根据 symfony 文档,您必须使用“作为快捷符号给出的实体名称,其中包含实体所在的包名称和 tvhe 实体的名称”,所以它应该类似于

--entity=CinergyPeopleServiceBundle:Group
于 2012-08-27T15:57:09.983 回答
0

如果您有多个 Bundle 并且想要使用不同的数据库连接,只需通过添加配置和参数来更新您的 config.yml 和 parameters.yml。

这将解决 CRUD 生成的问题。

于 2014-01-13T09:54:20.747 回答
0

我搜索了几个小时,直到我发现在我的 app/config/config.yml 中的教义.orm 中我删除auto_mapping: true了导致问题的原因。这可能对其他人有用:)

于 2014-12-23T19:44:14.137 回答
0

如果它仍然与某人相关 :) 伙计们,那是因为 DoctrineBundle DoctrineExtension 基于所有已注册的捆绑包编译有效别名列表,其中包含“实体”(或其他配置的)文件夹。

所以为了使用doctrine:generate:crud或generate:doctrine:crud,你必须在你的包中只创建文件夹实体,而不需要先创建实体(如命令所说——这是真的)。

因此,如果您的捆绑包中已经有一些实体,或者您的捆绑包中只有空的实体文件夹,那么您将可以使用它。

于 2015-01-09T16:34:44.770 回答