Pim-community-dev: 添加自定义类别属性后未生成Doctrine代理类

创建于 2017-06-15  ·  15评论  ·  资料来源: akeneo/pim-community-dev

我在问一个问题

你好,

我按照菜谱在1.7.5 CE(ORM)中为类别实体添加了不可翻译的属性。

一切在开发环境中都可以正常工作,但是切换到prod之后,我将面临app/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBundleEntityCategory.php): failed to open stream: No such file or directory

我尝试手动预热缓存,但这只会为扩展BaseCategory的新自定义类别实体生成一个理论代理类。 到目前为止,我发现的唯一解决方案是将此代理类复制到__CG__PimBundleCatalogBu​​ndleEntityCategory.php,这可能不是最佳做法;-)

你能给我一个提示,我想念什么吗?

谢谢!

question

最有用的评论

您好@DavidFeller

您可以尝试使用以下命令预热产品缓存:
php app/console cache:warmup --env=prod --no-debug

大多数情况下,它可以解决缓存问题。

问候

所有15条评论

您好@DavidFeller

您可以尝试使用以下命令预热产品缓存:
php app/console cache:warmup --env=prod --no-debug

大多数情况下,它可以解决缓存问题。

问候

你好@momoss

谢谢您的快速解答! :)

不幸的是,这就是我已经尝试过几次了。 似乎可行(没有错误输出),但此后仍缺少__CG__PimBundleCatalogBundleEntityCategory.php
另外,我通过php app/console doctrine:mapping:info检查了实体映射。

我知道这是一个教义或symfony问题,而不是真正的与akeneo相关的问题,但是我想我在AcmeCatalogBu​​ndle配置中缺少一些细节,要覆盖BaseCategory。

还是您认为将php降级到5.6更糟糕?

您好@DavidFeller

与@ damien-carcel讨论后,他告诉我文档中缺少某些内容,我们昨天进行了更新。

您可以签入Category class ,也许缺少一种方法:

public function getTranslationFQCN() { return CategoryTranslation::class; }

问候

你好@momoss

好的,我会检查的。 我认为仅在文档的第二部分(可翻译属性)才需要使用此方法。 由于我只添加了一个复选框,因此我“忽略了”该部分。 ;-)

我想我将尝试重新开始并创建可翻译的属性。

感谢您的帮助和问候,
大卫

我在最新的2.0版中遇到了同样的问题。 完全相同的问题,我遵循相同的文档。

并且我已将该字段添加为可翻译字段。 它已添加到数据库中,但在生产环境中仍然无法使用。
这是我从生产服务器本身得到的,并且遇到了相同的错误。 “”编译错误:require():无法打开所需的'/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBu​​ndleEntityCategory.php'

你好@Nebojsaa

很抱歉听到这本食谱对您不起作用。 我只是从pim-community-standard对其进行了全面测试,它对我有用,在FormType中只有一个关于小部件的错误:旧的符号在Symfony 3.4中不再起作用。

您可以在此请求中看到我的代码https://github.com/damien-carcel/pim-community-standard/pull/1。 我正在谈论的错误是在最后一次提交中。 我将尽快更新文档。

我没有完全遵循菜谱:所有内容都放在AppBundle ,所有服务和参数都在services.yml 。 我还添加了PHP 7.1 typehint。 但这不会改变食谱的有效性(当然,除了文本区域问题外)。

请尝试将您的代码与我的代码进行比较,您可能忘记了服务/参数覆盖。

此外,不要忘记可以滚动菜谱中的代码示例。 我最初错过了setDescription CategoryTranslation类中的setDescription方法。

最后,不要忘记清除缓存(使用rm -rf var/cache/*完全删除缓存),重新启动FPM,然后才更新您的Doctrine模式。

如果Akeneo队列守护进程(用于导入/导出)正在运行,您还可能遇到缓存问题:这将阻止清理APC缓存,然后再次污染Symfony缓存。 如果使用队列守护程序,则正确的过程是:

  • 停止守护程序
  • rm -rf var/cache/*
  • 重新启动FPM
  • 再次启动守护程序
  • 更新您的主义架构

顺便说一句,请不要发表已解决的问题,因为通常没有人回答/看到它。 我仅看到您的评论,因为我在对话中被加了标签,并收到了有关它的GitHub通知。 请更喜欢打开一个新期刊并链接原始期刊。

让我知道这对您有帮助。

问候,
达米安

嗯,这很奇怪。 我已经按照建议完成了所有工作,但无法正常工作。 另外,我正在尝试添加未翻译的类别。 所以我认为这并没有打扰我。

[2018-01-12 05:55:50] request.Critical:未捕获的PHP异常Symfony \ Component \ Debug \ Exception \ FatalErrorException:“编译错误:require():无法打开所需的'/ opt / bitnami / apps / akeneo / htdocs / var / cache / prod / doctrine / orm / Proxies / __ CG__PimBundleCatalogBu​​ndleEntityCategory.php'(include_path ='。:/ opt / bitnami / php / lib / php')“,位于/ opt / bitnami / apps / akeneo / htdocs / vendor /doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php行209 {“ exception”:“ [object](Symfony \ Component \ Debug \ Exception \ FatalErrorException(code:0):编译错误:require():无法打开所需的'/opt/bitnami/apps/akeneo/htdocs/var/cache/prod/doctrine/orm/Proxies/__CG__PimBundleCatalogBu​​ndleEntityCategory.php'(include_path = ..:/ opt / bitnami / php / lib / php') /opt/bitnami/apps/akeneo/htdocs/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php:209)“} []

问候,
Nebojsaa

pim_enrich.form.type.category.class是错误的,您使用的是Acme而不是捆绑软件。

其他的一切都还可以。 我只是将您的捆绑包与pim-community-standard 2.0一起使用,删除了路由(这是没有用的),并在app/config/config.yml配置了实体替代。 我能够使用您的新字段编辑和保存类别,没有任何问题。
我还需要在您的字段上停用您的验证,否则我无法安装icecat固定装置(您确认您的字段不能为空,但它们在我的固定装置中不存在😉)。

因此,我真的认为问题出在您的服务器上。 并查看您以前的文章中的错误,它显然是PHP缓存的问题。 bitnami服务器上可能正在运行某些阻止重新启动FPM时清除缓存的操作。

问候,
达米安

嘿,达米安,
好吧,我从来都不是系统管理员。 现在是时候了。

也许有些技巧,除了那些技巧。
您知道如何在哪里停止和启动守护程序并重新启动fpm吗?
我正在使用php 7.1。
您知道我应该使用哪些命令吗?

要重新启动FPM,将取决于您的服务器。 您正在使用什么Linux发行版? 现在它们中的大多数都使用systemd作为init,因此您应该能够通过运行sudo systemctl restart php7.1-fpm来重新启动FPM(FPM进程的名称可以从一个系统更改为另一个)。

队列是一个简单的php进程,您可以手动启动,也可以使用管理员启动。 您可以在这里找到详细的说明: https :

嗯,在此期间取得了成功。
现在,它显示“ Hello World!” -我的默认index.html.twig?

哦耶。 普通的。 您使用generate:bundle命令,对不对?
您需要从捆绑中删除视图Default/index.html.twig ,控制器和路由(不要忘记也从app/config/routing.yml删除它)。 他们没用。
然后它应该工作。

下一个错误:-D
不,我只是在开玩笑..
非常感谢你。

大家早上好。 我有一个小问题,我正在使用Symfony 4开发一个项目,在postgressql中有我的项目的数据库,安装了此管理器,并使用上述框架建立了与它的连接,但是当我尝试生成实体时从命令php bin / console的数据的基础上:映射:导入“应用程序\实体”注释--path = src /实体,它给我以下错误:

在ImportMappingDoctrineCommand.php行151中:

警告:file_put_contents(源代码/实体/“ tsubtipoanestesia” .php):无法打开流:没有此类文件或目录。

我想知道如何解决。
谢谢你。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

kanduvisla picture kanduvisla  ·  3评论

Jacky75 picture Jacky75  ·  3评论

ronn0 picture ronn0  ·  4评论

paulchubatyy picture paulchubatyy  ·  5评论

gotgelf picture gotgelf  ·  5评论