我正在尝试使用Symfony2 app/console
命令工具通过doctrine2命令生成CRUD。(app/console doctrine:generate:crud
)
问题是:我想在供应商中生成它(是的,我们在启动时直接在供应商中开发一些捆绑包)。当我执行命令并给出实体快捷方式名称时,它会返回一个错误:
[DoctrineORMORMException]
Unknown Entity namespace alias 'ExampleTemplateBundle'.
(是的,实体存在,实体快捷方式名称正确)
有没有办法在供应商中使用Symfony2和Doctrine2生成CRUD?
您不能修改供应商。尝试继承它并为自己的实体创建crud。
我找到了解决方案!
我已经找到错误并更正了问题。它位于条令/条令捆绑包中(对我来说v1.2.0)。
使过程失败的东西位于文件DoctrineBundle/Mapping/MetadataFactory.php
中
编辑:对于使用条令捆绑包v1.3.0及以上版本的人,文件已更改名称。现在是DisconnectedMetadataFactory.php
失败的代码如下:
private function getBasePathForClass($name, $namespace, $path)
{
$namespace = str_replace('\', '/', $namespace);
$search = str_replace('\', '/', $path);
$destination = str_replace('/'.$namespace, '', $search, $c);
if ($c != 1) {
throw new RuntimeException(sprintf('Can't find base path for "%s" (path: "%s", destination: "%s").', $name, $path, $destination));
}
return $destination;
}
所以我所做的是,我分叉回购,用以下代码替换代码:
private function getBasePathForClass($name, $namespace, $path)
{
$namespace = str_replace('\', '/', $namespace);
$search = str_replace('\', '/', $path);
$destination = str_replace('/' . $namespace, '', $search);
return $destination;
}
并更新了我的composer.json以使用条令/条令捆绑包的分叉版本。现在它就像一个符咒。