【发布时间】:2019-10-05 14:46:37
【问题描述】:
根据psr4子目录必须匹配子命名空间名称的大小写
“命名空间前缀”之后的连续子命名空间名称对应于“基本目录”中的一个子目录,其中命名空间分隔符代表目录分隔符。子目录名称必须与子命名空间名称的大小写匹配。
但是当我查看 Magento 2 的供应商目录时,我看到了不同的模块,其子目录名称与子命名空间名称不匹配。 例如:Magento 2 模块“vendor/magento/module-new-relic-reporting”使用命名空间“Magento\NewRelicReporting”
但是当我尝试按照 Magento 2 方法开发模块时,我失败了
- 创建一个名为“aneeqtariq143”的供应商文件夹
- 创建模块名称“magento2-product-newsletter”
- 使用内容创建一个 composer.json 文件
{
"name": "aneeqtariq143/magento2-module-magento2-product-newsletter",
"require": {
"php": "~7.0.0"
},
"type": "magento2-module",
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Aneeqtariq143\\Magento2ProductNewsletter\\": ""
}
}
}
- 使用命名空间创建控制器
namespace Aneeqtariq143\Magento2ProductNewsletter\Controller\Adminhtml\Product;
- 它不起作用。
- Magento 找不到我的控制器。
- 另外,请指出模块目录命名约定和命名空间的最佳做法。
【问题讨论】:
-
在标题中更具体一些有助于更快的响应。 stackoverflow.com/help/how-to-ask
标签: php module namespaces magento2 psr-4