मैं Magento 2 में लेआउट प्रसंस्करण फ़ाइल को कैसे डिबग कर सकता हूं?


14

Magento 2 थीम विनिर्देशन के अनुसार लेआउट फाइल प्रोसेसिंग के बारे में:

Magento एप्लिकेशन निम्न क्रम में लेआउट फ़ाइलों को संसाधित करता है:

1 / मॉड्यूल से सभी लेआउट फ़ाइलों को इकट्ठा करता है। ऑर्डर ऐप / etc / config.php से मॉड्यूल सूची में मॉड्यूल ऑर्डर द्वारा निर्धारित किया जाता है।

2. "विरासत में दिए गए विषयों के अनुक्रम को निर्धारित करता है [, ...]

3. / पिछले पूर्वज से लेकर वर्तमान तक विषयों के अनुक्रम को Iterates:

ए। सूची में सभी विस्तारित थीम लेआउट फ़ाइलों को जोड़ता है।

ख। सूची में ओवरराइड की गई लेआउट फ़ाइलों की जगह।

4. सूची से सभी लेआउट फ़ाइलों को जोड़ता है।

मैं इस प्रक्रिया के हर चरण के लिए लेआउट फ़ाइल को कैसे डीबग और देख सकता हूं?


क्या आपका मतलब है कि ब्रेक पॉइंट्स कहाँ रखें? या आप क्या उम्मीद करेंगे?
बुस्कामुज़ा

धन्यवाद। मेरा मुख्य उद्देश्य "सभी लेआउट फ़ाइल को मर्ज करता है" यह देखने के लिए है कि मैगेंटो 2 लेआउट कैसे प्रस्तुत करता है। मैंने नीचे के रूप में अपना जवाब जोड़ा है।
thienphucvx

@ thienphucvx, मैंने आपके कोड का उपयोग किया था लेकिन मैं var / log में .xml बनाने में असमर्थ हूं। क्या मुझे कुछ भी बदलने की आवश्यकता है?
शिक्षार्थी

क्या आप यह सुनिश्चित करने के लिए डिबग करने का प्रयास कर सकते हैं कि आपने उस मॉड्यूल को सही ढंग से बनाया है जैसे "वर्धमान के बहाने पद्धति पर var_dump कुछ" यह जाँचने के लिए कि यह काम कर रहा है या नहीं?
थिएंफुकवक्स

1
इस डेवलपर ऐप पर एक नज़र डालें, यह आपको डिबग प्रक्रिया में मदद कर सकता है: github.com/magespecialist/mage-chrome-toolbar
Phoenix128_RiccardoT

जवाबों:


16

अंत में, मैं सभी लोड किए गए xml लेआउट को प्रिंट कर सकता हूं और जान सकता हूं कि magento 2 लेआउट कैसे काम कर रहा है। यह जांचने में भी हमारी मदद करता है कि हमारा कस्टम मॉड्यूल लेआउट भरा हुआ है या नहीं। विचार यह है:

  • हम एक घटना " लेआउट_generate_blocks_after " सुनते हैं और उस बिंदु से सभी लोड किए गए पेड़ प्राप्त करते हैं।

  • सभी लोड किए गए ट्री को एक xml फ़ाइल में सहेजें।

1 / हम एक नई निर्देशिका बनाते हैं Sample/DevSample/Dev/registration.phpहमारे मॉड्यूल निर्देशिका के बारे में Magento 2 के साथ घोषणा करने के लिए बनाएँ ।

<?php

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Sample_Dev',
    __DIR__
);

2 / बनाएँ Sample/Dev/etc/module.xml: Magento 2 को हमारे मॉड्यूल के सेटअप संस्करण के बारे में बताने के लिए

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="module.xsd">
    <module name="Sample_Dev" setup_version="1.0.0" schema_version="1.0.0" release_version="1.0.1">
    </module>
</config>

3 / बनाएँ Sample/Dev/etc/frontend/events.xml। इस फ़ाइल में, हम घटना "लेआउट_गेटरेट_ब्लॉक_ऑफ्टर" सुनेंगे

<?xml version="1.0" encoding="UTF-8"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">

    <event name="layout_generate_blocks_after">
        <observer name="thienphucvx_layout_generate_blocks_after" instance="Sample\Dev\Model\Layout" />
    </event>

</config>

4 / Sample/Dev/Model/Layout.phpनीचे दी गई सामग्री के साथ बनाएं

<?php

namespace Sample\Dev\Model;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
class Layout  implements ObserverInterface
{
    protected $_logger;
    public function __construct ( \Psr\Log\LoggerInterface $logger
    ) {
        $this->_logger = $logger;
    }

    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $xml = $observer->getEvent()->getLayout()->getXmlString();
        /*$this->_logger->debug($xml);*//*If you use it, check ouput string xml in var/debug.log*/
        $writer = new \Zend\Log\Writer\Stream(BP . '/var/log/layout_block.xml');
        $logger = new \Zend\Log\Logger();
        $logger->addWriter($writer);
        $logger->info($xml);
        return $this;
    }
}

5 / नया मॉड्यूल सेट करें। अपने घर वेबसाइट निर्देशिका में। CMD कमांड लाइन दर्ज करें:

- php bin / magento मॉड्यूल: नमूना_डाव को सक्षम करें

- php बिन / magento सेटअप: उन्नयन

6 / उस पेज को रिफ्रेश करें, जिसे आप xml फ़ाइल देखना चाहते हैं (उदाहरण के लिए: आपका होम पेज) और अपने हैंडल xml फ़ाइल को चेक करें var/log/layout_block.xml


मैं अभी इस पर आया हूं और यह आश्चर्यजनक है। क्या आप Magento 2 के लिए एक PR सबमिट करना चाहेंगे, ताकि सभी में यह सुविधा हो सके? यहां तक ​​कि एक मॉड्यूल जारी करने से काफी मदद मिलेगी।
मुलपर्दा

हाय Mbalparda, मुझे नहीं पता कि यह कैसे करना है। क्या आप इसे जमा करने में मेरी मदद कर सकते हैं?
thienphucvx

हां, आपने ट्विटर पर पिंग किया।
मौलपर्दा

1
कहाँ है / upvoting के लिए पुल-अनुरोध? संपर्क ?
बर्नहार्ड ज़्यूरन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.