Noms de classe 'Void' dans le fournisseur / magento /

9

J'essaye de recompiler en utilisant

configuration de php bin / magento: di: compile

Mais lorsque j'exécute cette commande, j'obtiens:

Erreur fatale: impossible d'utiliser 'Void' comme nom de classe car il est réservé dans /var/www/html/magento/vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.php sur la ligne 9

J'utilise PHP 7.1.0-alpha.

G. Alex
la source

Réponses:

5

Je ne pense pas que Magento 2 soit encore compatible avec php 7.1-alpha, mais c'est un signal d'alarme.
Je pense que vous devriez signaler cela sur github .
Cela pourrait être un problème dans un proche avenir,

Marius
la source
Numéro Github pour référence: github.com/magento/magento2/issues/7663
Fabian Schmengler
18

Voici comment y remédier:

  1. modifier la vendor/magento/module-sales/etc/webapi.xmlligne 112:

    - <route url="/V1/invoices/:id/void" method="POST">
    + <route url="/V1/invoices/:id/voidInvoice" method="POST">
  2. modifier la vendor/magento/module-sales/Block/Adminhtml/Order/Invoice/View.phpligne 242:

    - return $this->getUrl('sales/*/void', ['invoice_id' => $this->getInvoice()->getId()]);
    + return $this->getUrl('sales/*/voidInvoice', ['invoice_id' => $this->getInvoice()->getId()]);
  3. modifier la vendor/magento/module-sales/Block/Adminhtml/Order/Creditmemo/View.phpligne 183:

    - return $this->getUrl('sales/*/void', ['creditmemo_id' => $this->getCreditmemo()->getId()]);
    + return $this->getUrl('sales/*/voidCreditmemo', ['creditmemo_id' => $this->getCreditmemo()->getId()]);
  4. modifier la vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.phpligne 9:

    - class Void extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\View
    + class VoidInvoice extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\View
  5. modifier la vendor/magento/module-sales/Controller/Adminhtml/Order/Creditmemo/Void.phpligne 10:

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

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

    à

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

  7. Renommer

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

    à

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

extrait de https://mage2.pro/t/topic/2433/2

Konstantin Gerasimov
la source
vous êtes les bienvenus monsieur
Konstantin Gerasimov
dans Magento Enterprise mv vendor / magento / module-récompense / Model / Action / Creditmemo / Void.php vendor / magento / module-récompense / Model / Action / Creditmemo / VoidCreditmemo.php en ligne 8 changer la classe Void en class VoidCreditmemo
marcinsdance
@KonstantinGerasimov, Existe-t-il un correctif disponible pour le M230?
Ravi Dudhara
2

Au lieu de modifier les fichiers principaux du fournisseur magento pour résoudre le problème, il serait plus logique d'utiliser la bonne version php. Selon ce que vous utilisez, il devrait être assez facile de définir une configuration BASH pour un emplacement de bac php particulier.

mlunt
la source
1

Ce n'est plus un problème pour Magento 2.2 - Magento 2.1 n'était pas compatible PHP7.1.

Alex
la source