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


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.