Как получить новый идентификатор продукта при использовании после плагина (Interceptor) в Magento 2 - PullRequest
1 голос
/ 17 марта 2019

Я создал перехватчик для действия сохранения контроллера продукта каталога

<type name="Magento\Catalog\Controller\Adminhtml\Product\Save">
    <plugin name="ricky_catalog_save_product"
            type="Ricky\Catalog\Plugin\Product\Save" sortOrder="10"
    />
</type>

Мой класс плагинов ниже

namespace Ricky\Catalog\Plugin\Product; 

class Save {
     public function afterExecute(
          \Magento\Catalog\Controller\Adminhtml\Product\Save $subject,
           $result)
    {
         $productId = $subject->productId; // This is not working

         /** $productId is provided in excute method in Save class 
            in Magento\Catalog\Controller\Adminhtml\Product\Save **/
    }
}

По некоторым причинам я должен использовать плагин (Шаблон проектирования перехватчика), я знаю, что могу получить вновь созданный идентификатор продукта с помощью наблюдателя для события catalog_product_save_after.Но, пожалуйста, предоставьте решение для плагинов.

Спасибо за помощь:)

1 Ответ

0 голосов
/ 19 марта 2019

Если вы обращаетесь к свойству $ subject-> productId, это означает, что оно должно быть определено в классе

\Magento\Catalog\Controller\Adminhtml\Product\Save.

Нет переменной класса, определенной с именем productId .

Вы можете переопределить контроллер и определить еще одну переменную открытого класса

public $productId;

и назначить идентификатор продукта где-нибудь в методе execute ():-

$this->productId = $productId;

Теперь в вашем плагине используйте его как: -

$subject->productId

Проверено и работает .. !!

...