供应商中的学说生成
Doctrine crud generation in vendor
我正在尝试使用 Symfony2 app/console
命令工具通过 doctrine2 命令生成 CRUD。 (app/console doctrine:generate:crud
)
问题来了:
我想在 vendors 中生成它(是的,我们在启动时直接在 vendors 中开发了一些包)。
当我执行命令并给出 实体快捷方式名称 时,它 returns 给我一个错误:
[Doctrine\ORM\ORMException]
Unknown Entity namespace alias 'ExampleTemplateBundle'.
(是的,实体存在且实体快捷方式名称很好)
有没有办法在使用 Symfony2 和 Doctrine2 的供应商中生成 CRUD?
您不能修改供应商。
尝试继承它并为您自己的实体创建一个 crud。
我找到了解决办法!
我已经找到错误并更正了问题。它位于 doctrine/doctrine-bundle(对我来说 v1.2.0)。
使进程失败的东西位于文件 DoctrineBundle/Mapping/MetadataFactory.php
编辑: 对于使用 doctrine-bundle 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 以使用我的 doctrine/doctrine-bundle 的分叉版本。
现在它就像一个魅力。
我正在尝试使用 Symfony2 app/console
命令工具通过 doctrine2 命令生成 CRUD。 (app/console doctrine:generate:crud
)
问题来了: 我想在 vendors 中生成它(是的,我们在启动时直接在 vendors 中开发了一些包)。 当我执行命令并给出 实体快捷方式名称 时,它 returns 给我一个错误:
[Doctrine\ORM\ORMException]
Unknown Entity namespace alias 'ExampleTemplateBundle'.
(是的,实体存在且实体快捷方式名称很好)
有没有办法在使用 Symfony2 和 Doctrine2 的供应商中生成 CRUD?
您不能修改供应商。 尝试继承它并为您自己的实体创建一个 crud。
我找到了解决办法!
我已经找到错误并更正了问题。它位于 doctrine/doctrine-bundle(对我来说 v1.2.0)。
使进程失败的东西位于文件 DoctrineBundle/Mapping/MetadataFactory.php
编辑: 对于使用 doctrine-bundle 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 以使用我的 doctrine/doctrine-bundle 的分叉版本。 现在它就像一个魅力。