Подкаталог PSR4 не соответствует регистру имен под-имен пространства - PullRequest
0 голосов
/ 05 октября 2019

В соответствии с psr4 подкаталог должен совпадать с регистром имен под-пространства имен

Смежные имена под-пространств имен после «пространства именпрефикс »соответствует подкаталогу в« базовом каталоге », в котором разделители пространства имен представляют разделители каталога. Имя подкаталога ДОЛЖНО совпадать с регистром имен под-пространств имен.

Но когда я заглянул в каталог поставщиков Magento 2, я увидел разные модули, чье имя подкаталога не совпадает симена под-пространства имен. Например: модуль Magento 2 " vendor / magento / module-new-реликвия-отчетность " используемое пространство имен " Magento \ NewRelicReporting "

Но когда я пытаюсь сделатьразработать модуль в соответствии с подходом Magento 2, Я не смог

  1. Создать папку поставщика с именем " aneeqtariq143 "
  2. Создать имя модуля" magento2-product-newsletter "
  3. Создать файл 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 не может найти мой контроллер.
  • Кроме того, укажите мне лучшие практики для соглашения об именах каталогов модулей и пространств имен.

1 Ответ

0 голосов
/ 09 октября 2019

Из того, как я понимаю, как Magento справляется с этим. Предполагая, что у вас нет проблем, вызванных файлами rout.xml в etc/frontend или etc/adminhtml. Имя, которое вы дали в файле composer.json aneeqtariq143/magento2-module-magento2-product-newsletter, будет означать, что ваше пространство имен должно быть Aneeqtariq143\\Magento2ModuleMagento2ProductNewsletter\\. Кажется, Magento ожидает, что вы будете использовать module-<modulename>, а не magento2-module-<modulename>.

. Стоит проверить, соответствует ли ваш URL, нацеленный на контроллер, (в вашем случае) <frontname(./etc/adminhtml/routes.xml)>/Adminhtml/Product в любом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...