Имена классов 'Void' внутри продавца / magento /


9

Я пытаюсь перекомпилировать используя

php bin / magento setup: di: compile

Но когда я запускаю эту команду, я получаю:

Неустранимая ошибка: невозможно использовать «Void» в качестве имени класса, поскольку оно зарезервировано в /var/www/html/magento/vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.php в строке 9

Я использую PHP 7.1.0-alpha.

Ответы:



18

Вот как это исправить:

  1. vendor/magento/module-sales/etc/webapi.xmlстрока редактирования 112:

    - <route url="/V1/invoices/:id/void" method="POST">
    + <route url="/V1/invoices/:id/voidInvoice" method="POST">
    
  2. vendor/magento/module-sales/Block/Adminhtml/Order/Invoice/View.phpстрока редактирования 242:

    - return $this->getUrl('sales/*/void', ['invoice_id' => $this->getInvoice()->getId()]);
    + return $this->getUrl('sales/*/voidInvoice', ['invoice_id' => $this->getInvoice()->getId()]);
    
  3. vendor/magento/module-sales/Block/Adminhtml/Order/Creditmemo/View.phpстрока редактирования 183:

    - return $this->getUrl('sales/*/void', ['creditmemo_id' => $this->getCreditmemo()->getId()]);
    + return $this->getUrl('sales/*/voidCreditmemo', ['creditmemo_id' => $this->getCreditmemo()->getId()]);
    
  4. редактировать vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.phpстроку 9:

    - class Void extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\View
    + class VoidInvoice extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\View
    
  5. отредактируйте vendor/magento/module-sales/Controller/Adminhtml/Order/Creditmemo/Void.phpстроку 10:

    - class Void extends \Magento\Backend\App\Action
    + class VoidCreditmemo extends \Magento\Backend\App\Action
    
  6. переименование

    vendor/magento/module-sales/Controller/Adminhtml/Order/Creditmemo/Void.php

    в

    vendor/magento/module-sales/Controller/Adminhtml/Order/Creditmemo/VoidCreditmemo.php

  7. переименование

    vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.php

    в

    vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/VoidInvoice.php

взято с https://mage2.pro/t/topic/2433/2


Добро пожаловать, сэр
Константин Герасимов,

в Magento Enterprise mv vendor / magento / module-reward / Model / Action / Creditmemo / Void.php vendor / magento / module-reward / Model / Action / Creditmemo / VoidCreditmemo.php в строке 8 изменить класс Void на класс VoidCreditmemo
marcinsdance

@KonstantinGerasimov, есть ли какой-нибудь патч для M230?
Рави Дудхара

2

Вместо того, чтобы изменять основные файлы magento vendor для решения проблемы, было бы более разумно использовать правильную версию php. В зависимости от того, что вы используете, должно быть достаточно легко установить конфигурацию BASH для определенного местоположения php bin.


1

Это больше не проблема для Magento 2.2 - Magento 2.1 не был совместим с PHP7.1.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.