Làm cách nào tôi có thể nhận được Phản hồi getBody () trong sự kiện Observer?


8

Trong Magento 1 tôi có thể làm như sau:

$response = $observer->getEvent()->getControllerAction()->getResponse();
if(!$response) {
   return $this;
 }

$html = $response->getBody(); 

Làm thế nào tôi có thể làm điều tương tự trong Magento 2?

Câu trả lời:


6

Giả sử mô-đun của bạn ở dưới Vendor\Module

Nếu bạn muốn chụp HTML từ phản ứng, bạn có thể khai báo các sự kiện của bạn dưới etc\<area>\events.xml(nơi <area>adminhtmlhay frontend):

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="controller_front_send_response_before">
        <observer name="vendor_module" instance="Vendor\Module\Model\Observer" shared="false" />
    </event>
</config>

Sau đó, dưới Model\Observer.php:

<?php

namespace Vendor\Module\Model;

use Magento\Framework\Event\ObserverInterface;

class Observer implements ObserverInterface
{
    public function execute(\Magento\Framework\Event\Observer $observer) 
    {
        $response = $observer->getEvent()->getData('response');
        if (!$response) return;
        $body = $response->getBody();
    }
}

Có, nó hoạt động tốt ngay bây giờ. Tôi không thể cung cấp cho bạn +50 vì nó chưa hoàn thành trong 24 giờ.
Pratik
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.