আমি ম্যাজেন্টো 2 এজেএক্সের মাধ্যমে এইচটিএমএল রেন্ডার করার সেরা উপায়টি সন্ধান করার চেষ্টা করি।
উপায় 1: বিন্যাস ছাড়াই নিয়ামক ব্যবহার করা
ফাইল Foo/Bar/Controller/Popin/Content.php
<?php
namespace Foo\Bar\Controller\Popin;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
/**
* Class Content
*/
class Content extends Action
{
/**
* Content constructor.
*
* @param Context $context
*/
public function __construct(
Context $context
) {
parent::__construct($context);
}
/**
*
*/
public function execute()
{
/** @var \Magento\Framework\View\Layout $layout */
$layout = $this->_view->getLayout();
/** @var \Foo\Bar\Block\Popin\Content $block */
$block = $layout->createBlock(\Foo\Bar\Block\Popin\Content::class);
$block->setTemplate('Foo_Bar::popin/content.phtml');
$this->getResponse()->setBody($block->toHtml());
}
}
উপায় 2: কাস্টম লেআউট সহ নিয়ামক ব্যবহার করে
ফাইল Foo/Bar/Controller/Popin/Content.php
<?php
namespace Foo\Bar\Controller\Popin;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
/**
* Class Content
*/
class Content extends Action
{
/**
* Content constructor.
*
* @param Context $context
*/
public function __construct(
Context $context
) {
parent::__construct($context);
}
/**
*
*/
public function execute()
{
$this->_view->loadLayout();
$this->_view->renderLayout();
}
}
ফাইল Foo/Bar/view/frontend/page_layout/ajax-empty.xml
<?xml version="1.0"?>
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_layout.xsd">
<container name="root"/>
</layout>
ফাইল Foo/Bar/view/frontend/layout/foo_bar_popin_content.xml
<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="ajax-empty" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
<referenceContainer name="root">
<block class="Foo\Bar\Block\Popin\Content" name="foo_bar_popin_content" template="Foo_Bar::popin/content.phtml" cacheable="false"/>
</referenceContainer>
</body>
</page>
আইএমও সেরা অনুশীলনটিকে ওয়ে 2 বলে মনে হচ্ছে কারণ এটি যুক্তিটিকে নিয়ন্ত্রণকারী থেকে পৃথক করে।
তবে ওয়ে 2 এর সমস্যাটি হ'ল <body>
এবং এর <head>
সাথে CSS
/ JS
উত্পন্ন হয়েছে সুতরাং এটিতে কেবল আমার ব্লক টেমপ্লেট সহ এটি একটি সম্পূর্ণ পরিষ্কার HTML নয়।
- আমি কি কাস্টম লেআউটটি ভুল উপায়ে ব্যবহার করছি?
- হয় ওয়ে 1 একটি ভাল অনুশীলন হিসাবে বিবেচনা করা হয়?
- অন্য কোন উপায় আছে কি?