Magento自定义模块调试出现Generic类未找到错误如何解决?
Magento后台自定义按钮类未找到报错排查方案
PHP Fatal error: Uncaught Error: Class 'Pricing\ModulePrice\Block\Adminhtml\Product\Edit\Button\Generic' not found in C:\xampp\htdocs\furniturestore\app\code\Pricing\ModulePrice\block\AdminHtml\Product\Edit\Button\Pricing.php:8 Stack trace: #0 {main} thrown in C:\xampp\htdocs\furniturestore\app\code\Pricing\ModulePrice\block\AdminHtml\Product\Edit\Button\Pricing.php on line 8
- 第一步:检查文件夹大小写是否符合PSR-4规范
Magento严格遵循PSR-4自动加载规则,要求文件夹名和命名空间大小写完全一致。从报错路径可以看到你的文件夹命名是block/AdminHtml/,和命名空间的Block\Adminhtml\不匹配,需要做两处修改:- 小写开头的
block文件夹重命名为大写开头的Block AdminHtml文件夹重命名为Adminhtml(h小写,和命名空间保持一致)
- 小写开头的
- 第二步:检查继承类的引用是否正确
报错说明你当前Pricing.php中继承的是当前模块目录下的Generic类,如果你没有在同目录下自定义这个类,大概率是类引用错误。常规Magento产品后台按钮自定义场景需继承核心通用按钮类,调整代码如下:
如果你确实需要自定义当前模块的Generic基类,需确保同目录下已创建// 修正use声明引用核心类 use Magento\Catalog\Block\Adminhtml\Product\Edit\Button\Generic; // 类定义部分继承对应核心类 class Pricing extends Generic { // 你的业务逻辑代码 }Generic.php文件,且命名空间、类名完全符合规范。 - 第三步:检查命名空间声明是否正确
打开Pricing.php文件,确认顶部的命名空间声明为:
必须和修改后的文件路径namespace Pricing\ModulePrice\Block\Adminhtml\Product\Edit\Button;app/code/Pricing/ModulePrice/Block/Adminhtml/Product/Edit/Button/Pricing.php完全对应。 - 第四步:更新Magento加载缓存
调整完成后执行以下命令更新自动加载规则、清理缓存:bin/magento setup:di:compile bin/magento cache:clean bin/magento cache:flush
内容的提问来源于stack exchange,提问作者Sanjana Khatri
相关产品推荐
相关产品推荐


