Nombres de clase 'nulo' dentro de proveedor / magento /

9

Estoy tratando de volver a compilar usando

php bin / magento setup: di: compile

Pero cuando ejecuto este comando, obtengo:

Error grave: no se puede usar 'Void' como nombre de clase, ya que está reservado en /var/www/html/magento/vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.php en la línea 9

Estoy ejecutando PHP 7.1.0-alpha.

G. Alex
fuente

Respuestas:

5

No creo que Magento 2 sea aún compatible con php 7.1-alpha, pero esta es una señal de alarma.
Creo que deberías informar esto en github .
Podría ser un problema en el futuro cercano,

Marius
fuente
Problema de
Fabian Schmengler el
18

Aquí se explica cómo solucionarlo:

  1. editar vendor/magento/module-sales/etc/webapi.xmllínea 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.phplínea 242:

    - return $this->getUrl('sales/*/void', ['invoice_id' => $this->getInvoice()->getId()]);
    + return $this->getUrl('sales/*/voidInvoice', ['invoice_id' => $this->getInvoice()->getId()]);
    
  3. editar vendor/magento/module-sales/Block/Adminhtml/Order/Creditmemo/View.phplínea 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.phplínea 9:

    - class Void extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\View
    + class VoidInvoice extends \Magento\Sales\Controller\Adminhtml\Invoice\AbstractInvoice\View
    
  5. editar vendor/magento/module-sales/Controller/Adminhtml/Order/Creditmemo/Void.phplínea 10:

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

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

    a

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

  7. rebautizar

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

    a

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

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

Konstantin Gerasimov
fuente
de nada señor
Konstantin Gerasimov
en Magento Enterprise mv vendor / magento / module-recompensa / Modelo / Acción / Creditmemo / Void.php vendedor / magento / module-recompensa / Modelo / Acción / Creditmemo / VoidCreditmemo.php en línea 8 cambiar clase Void a clase
VoidCreditmemo
@ KonstantinGerasimov, ¿Hay algún parche disponible para M230?
Ravi Dudhara
2

En lugar de modificar los archivos principales del proveedor de magento para resolver el problema, tendría más sentido usar la versión de php correcta. Dependiendo de lo que esté utilizando, debería ser bastante fácil establecer una configuración de BASH para una ubicación particular de bin php.

mlunt
fuente
1

Esto ya no es un problema para Magento 2.2: Magento 2.1 no era compatible con PHP7.1.

Alex
fuente