Classnames 'Void' di dalam vendor / magento /

9

Saya mencoba mengkompilasi ulang menggunakan

setup php bin / magento: di: compile

Tetapi ketika saya menjalankan perintah ini, saya mendapatkan:

Kesalahan fatal: Tidak dapat menggunakan 'Void' sebagai nama kelas karena dicadangkan di /var/www/html/magento/vendor/magento/module-sales/Controller/Adminhtml/Order/Invoice/Void.php on line 9

Saya menjalankan PHP 7.1.0-alpha.

G. Alex
sumber

Jawaban:

5

Saya tidak berpikir Magento 2 belum kompatibel dengan php 7.1-alpha, tetapi ini adalah sinyal alarm.
Saya pikir Anda harus melaporkan ini di github .
Ini bisa menjadi masalah dalam waktu dekat,

Marius
sumber
Masalah Github untuk referensi: github.com/magento/magento2/issues/7663
Fabian Schmengler
18

Berikut cara memperbaikinya:

  1. edit vendor/magento/module-sales/etc/webapi.xmlbaris 112:

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

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

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

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

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

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

    untuk

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

  7. ganti nama

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

    untuk

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

diambil dari https://mage2.pro/t/topic/2433/2

Konstantin Gerasimov
sumber
terima kasih kembali pak
Konstantin Gerasimov
di Magento Enterprise mv vendor / magento / module-reward / Model / Action / Creditmemo / Void.php vendor / magento / module-reward / Model / Action / Creditmemo / VoidCreditmemo.php di baris 8 ubah kelas Void ke kelas VoidCreditmemo
marcinsdance
@KonstantinGerasimov, Apakah ada patch yang tersedia untuk M230?
Ravi Dudhara
2

Alih-alih memodifikasi file vendor magento inti untuk menyelesaikan masalah, akan lebih masuk akal untuk menggunakan versi php yang tepat. Tergantung pada apa yang Anda gunakan, itu harus cukup mudah untuk mengatur konfigurasi BASH untuk lokasi bin php tertentu.

mlunt
sumber
1

Ini bukan lagi masalah untuk Magento 2.2 - Magento 2.1 tidak kompatibel dengan PHP7.1.

Alex
sumber