php - 在 MakeCrud.php 第 103 行:调用成员函数 getRepositoryClass() on null
问题描述
我正在尝试Symfony 4.4
使用bin/console make:crud
命令创建一个 crud,但出现以下错误
In MakeCrud.php line 103:
Call to a member function getRepositoryClass() on null
这是我试图用于 crud 的课程的一部分
<?php
namespace Domain\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
class Segment
{
private $id;
private $uidentifier;
private $name;
我用命名空间 oto generate crud 键入类名,但我收到错误,可能是什么问题?
解决方案
所以我有点好奇并确认这是一个命名空间问题。
我为自己创建了一个 Domain\Entity\Segment 类,然后运行
bin/console make:crud 'Domain\Entity\Segment'
并得到了同样的错误信息。
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,然后复制/重构您生成的控制器和表单。无论哪种方式,都会很痛苦。
我想您也可以分叉制造商捆绑包并直接编辑源代码。如果您要生成一堆杂物,实际上可能值得付出努力。但这将留作练习。
推荐阅读
- reactjs - 使用反应钩子进行全局状态管理时如何将状态从类组件传递到全局状态
- c++ - c++ std::sort 函数与自定义比较器无限循环
- php - Laravel - xampp 找不到驱动程序(SQL:select * from sqlite_master where type = 'table' and name = migrations)
- perforce - P4 获取最新版本仅同步文件夹的一部分?
- regex - 提取文件路径并复制到 pwd
- c# - 如何在没有持久文件的情况下在 Linux 中使用 .NET 内存映射文件?
- scala - 使用scala计算单词之间的余弦相似度
- reactjs - 使用Effect清理功能,防止未挂载的组件异步更新
- php - php phalcon 使用 composer autoload.php 不工作
- javascript - 当函数返回 json 时 PHP 返回 ContentType text/html