Klassennamen 'Void' innerhalb des Anbieters / magento /

9

Ich versuche mit neu zu kompilieren

PHP Bin / Magento Setup: di: kompilieren

Aber wenn ich diesen Befehl ausführe, bekomme ich:

Schwerwiegender Fehler: 'Void' kann nicht als Klassenname verwendet werden, da er in /var/www/html/magento/vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.php in Zeile 9 reserviert ist

Ich verwende PHP 7.1.0-alpha.

G. Alex
quelle

Antworten:

5

Ich glaube nicht, dass Magento 2 noch mit PHP 7.1-Alpha kompatibel ist, aber dies ist ein Alarmsignal.
Ich denke, Sie sollten dies auf Github melden .
Es könnte in naher Zukunft ein Problem sein,

Marius
quelle
Github Ausgabe als Referenz: github.com/magento/magento2/issues/7663
Fabian Schmengler
18

So beheben Sie das Problem:

  1. vendor/magento/module-sales/etc/webapi.xmlZeile 112 bearbeiten :

    - <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.phpZeile 242 bearbeiten :

    - 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.phpZeile 183 bearbeiten :

    - 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.phpZeile 9 bearbeiten :

    - 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.phpZeile 10 bearbeiten :

    - class Void extends \Magento\Backend\App\Action
    + class VoidCreditmemo extends \Magento\Backend\App\Action
    
  6. umbenennen

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

    zu

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

  7. umbenennen

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

    zu

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

entnommen aus https://mage2.pro/t/topic/2433/2

Konstantin Gerasimov
quelle
Sie sind sehr willkommen, Sir
Konstantin Gerasimov
in Magento Enterprise mv Anbieter / Magento / Modul-Belohnung / Modell / Aktion / Creditmemo / Void.php Anbieter / Magento / Modul-Belohnung / Modell / Aktion / Creditmemo / VoidCreditmemo.php in Zeile 8 Klasse Void in Klasse VoidCreditmemo ändern
marcinsdance
@KonstantinGerasimov, Gibt es einen Patch für M230?
Ravi Dudhara
2

Anstatt die Kerndateien des Magento-Anbieters zu ändern, um das Problem zu beheben, wäre es sinnvoller, die richtige PHP-Version zu verwenden. Je nachdem, was Sie verwenden, sollte es einfach genug sein, eine BASH-Konfiguration für einen bestimmten PHP-Bin-Speicherort festzulegen.

mlunt
quelle
1

Dies ist kein Problem mehr für Magento 2.2 - Magento 2.1 war nicht PHP7.1-kompatibel.

Alex
quelle