我试图用bin/console make:crud
命令在Symfony 4.4
中创建crud,但收到以下错误
In MakeCrud.php line 103:
Call to a member function getRepositoryClass() on null
这是我试图用于crud 的类的一部分
<?php
namespace DomainEntity;
use DoctrineCommonCollectionsArrayCollection;
use DoctrineCommonCollectionsCollection;
class Segment
{
private $id;
private $uidentifier;
private $name;
我键入了带有namespasce的类名来genterate crud,但我得到了错误,可能出了什么问题?
所以我有点好奇,并确认这是一个命名空间问题。
我为自己创建了一个Domain\Entity\ Segment类,然后运行
bin/console make:crud 'DomainEntitySegment'
得到了相同的错误信息。
make:crud命令期望实体位于App\Entity之下。似乎无法说服它在Domain\Entity下只查找实体。
然而,Maker Bundle本身允许您更改应用程序根命名空间的名称:
# config/packages/maker.yaml Need to add this file
maker:
root_namespace: Domain
# Then run
bin/console make:crud Segment
它是有效的。问题是根命名空间用于生成所有文件,因此,例如,您最终得到的Domain\Controller\SegmentController类可能不是您希望的位置。
我检查了源代码,没有简单的方法只调整实体名称空间。如果你计划大量使用crud,那么你要么需要将你的实体复制到App\Entity,要么指定root_namespace,然后复制/重构你生成的控制器和表单。不管怎样,这都是一种痛苦。
我想您也可以派生maker捆绑包并直接编辑源代码。如果你有一堆crud要生成,那么付出这些努力可能是值得的。但这将是一项练习。