Имена классов '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.

Г. Алекс
источник

Ответы:

5

Я не думаю, что Magento 2 еще совместим с php 7.1-alpha, но это сигнал тревоги.
Я думаю, вы должны сообщить об этом на GitHub .
Это может быть проблемой в ближайшем будущем,

Мариус
источник
Выпуск Github для справки: github.com/magento/magento2/issues/7663
Фабиан Шменглер,
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.

mlunt
источник
1

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

Alex
источник