Magento 2.3.1 überschreibt view.xsd Verwenden des Plugins Funktioniert nicht vor 2.3.1

7

Ich versuche, view.xsd mit dem Plugin zu überschreiben und es funktioniert unter Magento 2.1.x und 2.2.x, aber nicht unter 2.3.1.

Ich füge den gleichen Code hinzu, um ihn hier zu beschreiben.

Erweitern des complexType mit dem Namen "imageType" um einen benutzerdefinierten Bildtyp

Pratik
quelle
Können Sie posten, was Sie versucht haben, und auch den neuen Code ausprobieren, den ich getSchema @Pratik
Prathap Gunasekaran
@PrathapGunasekaran Versuchen Sie einfach, SchemaLocator zu überschreiben. Verwenden Sie die Einstellungen und das Plugin in beiden Fällen, es funktioniert nicht in 2.3.1
Pratik
Funktioniert die überschriebene Klasse? Fügen Sie ein Protokoll hinzu und überprüfen Sie es, bevor Sie
Prathap Gunasekaran
@PrathapGunasekaran Ich habe viel Erfahrung in Magento, also versuche ich alles, bevor ich hier poste, einschließlich Log.
Pratik
Sie müssen es dort finden, wo es fehlschlägt und wo es schief gelaufen ist. Gibt es einen Fehler beim Kompilieren oder was dies nach dem Umschreiben oder Abfangen bewirkt
Prathap Gunasekaran

Antworten:

2

Versuchen Sie dies, Sie können mit Präferenz erweitern

Fügen Sie di.xml im folgenden Ordner hinzu

app / code / Vendor / ModuleName / etc / di.xml

Fügen Sie dann den folgenden Code hinzu

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Magento\Framework\Config\SchemaLocator" type="Vendor\ModuleName\Config\SchemaLocator" />
</config>

Fügen Sie dann SchemaLocator.php im folgenden Pfad hinzu

app / code / Vendor / ModuleName / Config / SchemaLocator.php

Fügen Sie dann den folgenden Code hinzu

<?php
namespace Vendor\ModuleName\Config;
use Magento\Framework\Module\Dir;

class SchemaLocator extends \Magento\Framework\Config\SchemaLocator implements \Magento\Framework\Config\SchemaLocatorInterface
{
   protected $schema = null;
   /**
 * @param \Magento\Framework\Module\Dir\Reader $moduleReader
 */
public function getSchema()
{
    $result = sprintf(realpath(__DIR__ . '/../etc/view.xsd'));
    return $result;
}

/**
 * {@inheritdoc}
 */
public function getPerFileSchema()
{
    return $this->_schema;
}
}

Der obige Code ändert den Pfad von view.xsd zu Ihrem benutzerdefinierten Modul vom Kern.

Fügen Sie abschließend die Datei view.xsd im folgenden Pfad hinzu

app / code / Vendor / ModuleName / etc / view.xsd

dann können Sie dort Ihre Änderungen hinzufügen.

HINWEIS: Dies funktioniert beispielsweise in M2.3 und in früheren Version verwendete Plugin statt Präferenz

Prathap Gunasekaran
quelle
1
Hallo @Prathap Hast du den Link überprüft, den ich in Frage poste? Sie
posten die
Hey @Pratik Probieren Sie es einfach aus und ich glaube nicht, dass eine dieser Antworten bevorzugt wird, und dies funktioniert in M2.3 einwandfrei. Ich habe getestet.
Prathap Gunasekaran
Haben Sie 2.3.0 oder 2.3.1 eingecheckt?
Pratik
Funktioniert es oder nicht? nicht viel Unterschied von 2.3 bis 2.3.1 in Bezug auf di
Prathap Gunasekaran
2
es funktioniert nicht in 2.3.1.
Pratik