php - 保存类别时的 Magento 问题
问题描述
我在 Magento 2.3.5 中保存类别时遇到一些问题,当我在更改 SEO 信息(元标题、元描述和元关键字)后单击保存时会出现此错误。
传递给 Magento\Catalog\Model\Category\FileInfo::removeStorePath() 的参数 1 必须是字符串类型,给定数组,在 /home/adminpsol2016/public_html/vendor/magento/module-catalog/Model/Category/FileInfo 中调用.php 在第 167 行
在这里你可以看到问题的截图。
解决方案
这让我很头疼,但最终还是设法弄清楚了;我的情况如下:
复制:
backend_model
使用:=添加自定义类别属性Magento\Catalog\Model\Category\Attribute\Backend\Image
- 无论出于何种原因,类别表单保存操作都会失败(例如,类别模型保存功能上有一个插件会引发异常)
原因:
如果您查看https://github.com/magento/magento2/blob/2.4-develop/app/code/Magento/Catalog/Controller/Adminhtml/Category/Save.php#L240,您会发现这具有效果将当前表单请求的整个 POST 数据存储到会话(LocalizedException
块也是如此)。稍后,此数据将在https://github.com/magento/magento2/blob/2.4-develop/app/code/Magento/Catalog/Controller/Adminhtml/Category/Edit.php#L95 和表单之后立即恢复该image
属性的信息被剥离/清除。这当然不处理我们可能为类别实体定义的任何图像类型的自定义属性。
解决方案:
我在 上添加了一个after*
插件(adminhtml
仅在区域中)\Magento\Framework\Session\SessionManager::__call
,我在其中明确检查调用的方法是getCategoryData
:如果是这种情况,我会获取所有自定义类别图像属性,并像这样Category/Edit
做一样从返回的数组中删除它们。
这样,任何进一步的异常消息都会正确显示在后台(如果它扩展了LocalizedException
)
推荐阅读
- itext7 - 我们可以使用 iText 7 在 pdf 中设置 List-Style-Position 吗?有可用的 API 吗?
- git - git reset 提交指定分支
- python - TypeError:“NoneType”对象在 google colab 中不可调用
- ios - 如何在swiftUI中的Foreach循环上显示除一项之外的图像?
- azure-active-directory - 技术查询:某些服务主体功能背后的原因
- java - 在 Android 设备(手机、平板电脑等)上使用 Kiosk 模式
- azure - 从邮递员调用时,后端池中带有 ACI 实例的 Azure 应用程序网关给出“502 Bad Gateway”错误
- python-3.x - django.db.utils.DatabaseError:尝试检索错误 ORA-01804 的文本时出错
- jquery - 如果使用带有 RegEx 的 Jquery 电子邮件无效,则禁用提交按钮
- python-3.x - 无法在 Mac M1 上安装 pandas 和其他 python 库