আমি কীভাবে লেভেল ফাইল প্রসেসিংটি ম্যাজেন্টো 2 এ ডিবাগ করব?


14

লেআউট ফাইল প্রসেসিং সম্পর্কে ম্যাজেন্টো 2 থিমের স্পেসিফিকেশন অনুসারে:

Magento অ্যাপ্লিকেশন নিম্নলিখিত ক্রমে লেআউট ফাইলগুলি প্রক্রিয়া করে:

1 / মডিউলগুলি থেকে সমস্ত লেআউট ফাইল সংগ্রহ করে। অ্যাপ্লিকেশন / ইত্যাদি / config.php থেকে মডিউল তালিকার মডিউলগুলির অর্ডার দ্বারা অর্ডার নির্ধারিত হয়।

২ / / উত্তরাধিকারসূত্রে প্রাপ্ত থিমগুলির ক্রম নির্ধারণ করে [, ...,]

৩ / / শেষ পূর্বপুরুষ থেকে বর্তমানের থিমগুলির ক্রমটি আইট্রেট করে:

ক। তালিকায় সমস্ত প্রসারিত থিম বিন্যাস ফাইল যুক্ত করে।

খ। তালিকায় ওভাররাইড লেআউট ফাইলগুলি প্রতিস্থাপন করে।

4. / তালিকা থেকে সমস্ত বিন্যাস ফাইল একত্রিত করে।

এই প্রক্রিয়াটির প্রতিটি পদক্ষেপের জন্য আমি কীভাবে ডিবাগ ফাইলটি দেখতে পারি?


ব্রেক পয়েন্ট কোথায় রাখবেন মানে? বা আপনি কি আশা করবেন?
— বাসকামুজা

হাই, ধন্যবাদ. আমার মূল উদ্দেশ্যটি কীভাবে ম্যাজেন্টো 2 লেআউট রেন্ডার করে তা দেখতে "সমস্ত লেআউট ফাইলটি একত্রিত করে" মুদ্রণ করা। আমি আমার উত্তরটি নীচের হিসাবে যুক্ত করেছি।
— thienphucvx

@ থিয়েনফুকভেক্স, আমি আপনার কোড ব্যবহার করেছি তবে আমি var / লগে .xML তৈরি করতে অক্ষম। আমার কি কিছু বদলাতে হবে?
— শিক্ষার্থী

আপনি যে ডিগ্রিটি সঠিকভাবে "পর্যবেক্ষকের উত্তেজক পদ্ধতিতে var_dump কিছু" তৈরি করেছেন তা পরীক্ষা করছে কিনা তা পরীক্ষা করে দেখার জন্য আপনি ডিবাগ করার চেষ্টা করতে পারেন?
— থিয়েনফুকভেক্স

1
এই বিকাশকারী অ্যাপ্লিকেশনটি দেখুন, এটি আপনাকে ডিবাগ প্রক্রিয়ায় সহায়তা করতে পারে: github.com/magesp विशेषज्ञist
— ফিনিক্স

উত্তর:


16

অবশেষে, আমি সমস্ত লোড হওয়া এক্সএমএল লেআউট মুদ্রণ করতে এবং জানতে পারি কীভাবে ম্যাজেন্টো 2 লেআউট কাজ করছে। এটি আমাদের কাস্টম মডিউল বিন্যাস লোড হয়েছে কিনা তা যাচাই করতে আমাদের সহায়তা করে। ধারণাটি হ'ল:

  • আমরা একটি ইভেন্ট " লেআউট_জেনারেট_ব্লকস_কোথার " শুনি এবং সেই জায়গা থেকে সমস্ত বোঝাই গাছ পাই।

  • সমস্ত বোঝা গাছ একটি এক্সএমএল ফাইলে সংরক্ষণ করুন।

1 / আমরা একটি নতুন ডিরেক্টরি তৈরি Sample/Dev। Sample/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: ম্যাজেন্টো 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 / নতুন মডিউল সেট আপ করুন। আপনার হোম ওয়েবসাইট ডিরেক্টরিতে। সিএমডি কমান্ড লাইনে প্রবেশ করুন:

- পিএইচপি বিন / ম্যাজেন্টো মডিউল: নমুনা_দেব সক্ষম করুন

- পিএইচপি বিন / ম্যাজেন্টো সেটআপ: আপগ্রেড

/ / আপনি যে পৃষ্ঠাকে এক্সএমএল ফাইলটি দেখতে চান তা রিফ্রেশ করুন (উদাহরণস্বরূপ: আপনার হোম পৃষ্ঠা) এবং এতে আপনার হ্যান্ডেল এক্সএমএল ফাইলটি চেক করুন var/log/layout_block.xml।


আমি কেবল এটি জুড়ে এসেছি এবং এটি আশ্চর্যজনক। আপনি কি Magento 2 এ জনসংযোগ জমা দিতে আপত্তি করবেন যাতে প্রত্যেকেরই এই বৈশিষ্ট্য থাকতে পারে? এমনকি একটি মডিউল প্রকাশ করা দুর্দান্ত সাহায্য করবে।
— মবলপর্দা

হাই মবলপর্দা, আমি কীভাবে এটি করব তা জানি না। আপনি এটি জমা দিতে আমাকে সাহায্য করতে পারেন?
— থিয়েনফুকভেক্স

হ্যাঁ আপনাকে টুইটারে পিন করেছে।
— মবলপর্দা

1
upvoting জন্য সমস্যা / টানা অনুরোধ কোথায়? লিঙ্ক?
— বার্নহার্ড জার্ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.