Nomes de classe 'Vazio' dentro do fornecedor / magento /

9

Estou tentando recompilar usando

php bin / magento setup: di: compile

Mas quando executo esse comando, recebo:

Erro fatal: Não é possível usar 'Void' como nome da classe, pois está reservado em /var/www/html/magento/vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.php na linha 9

Estou executando o PHP 7.1.0-alpha.

G. Alex
fonte

Respostas:

5

Eu não acho que o Magento 2 ainda seja compatível com o php 7.1-alpha, mas este é um sinal de alarme.
Eu acho que você deveria denunciar isso no github .
Pode ser um problema no futuro próximo,

Marius
fonte
Problema no Github para referência: github.com/magento/magento2/issues/7663
Fabian Schmengler
18

Aqui está como corrigi-lo:

  1. editar vendor/magento/module-sales/etc/webapi.xmllinha 112:

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

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

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

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

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

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

    para

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

  7. renomear

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

    para

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

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

Konstantin Gerasimov
fonte
você é senhor muito bem-vindo
Konstantin Gerasimov
no Magento Enterprise mv vendor / magento / module-award / Model / Action / Creditmemo / Void.php vendor / magento / module-award / Model / Action / Creditmemo / VoidCreditmemo.php na linha 8 alterar a classe Void para a classe VoidCreditmemo
marcinsdance
@ KonstantinGerasimov, Existe algum patch disponível para o M230?
Ravi Dudhara
2

Em vez de modificar os arquivos principais do fornecedor magento para resolver o problema, faria mais sentido usar a versão php correta. Dependendo do que você estiver usando, deve ser fácil definir uma configuração do BASH para um local específico do bin php.

mlunt
fonte
1

Isso não é mais um problema para o Magento 2.2 - Magento 2.1 não era compatível com PHP7.1.

Alex
fonte