Wie kann ich die Antwort getBody () im Observer-Ereignis erhalten?

8

In Magento 1 kann ich Folgendes tun:

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

$html = $response->getBody(); 

Wie kann ich dasselbe in Magento 2 tun?

Pratik
quelle

Antworten:

6

Angenommen, Ihr Modul ist unter Vendor\Module

Wenn Sie den HTML-Code aus der Antwort erfassen möchten, können Sie Ihr Ereignis unter etc\<area>\events.xml(wo <area>ist adminhtmloder frontend) deklarieren :

<?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>

Dann unter 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();
    }
}
Raphael beim digitalen Pianismus
quelle
Ja, es funktioniert gut, danke, ich kann dir nicht +50 geben, weil es nicht 24 Stunden abgeschlossen ist.
Pratik