Unable to get newly inserted Product's Id using After Plugin for Catalog Product save controller...

Does convergence of polynomials imply that of its coefficients?

Emojional cryptic crossword

How do you justify more code being written by following clean code practices?

Is xar preinstalled on macOS?

Air travel with refrigerated insulin

How to find the largest number(s) in a list of elements, possibly non-unique?

Why didn’t Eve recognize the little cockroach as a living organism?

Knife as defense against stray dogs

How to balance a monster modification (zombie)?

label a part of commutative diagram

Why is indicated airspeed rather than ground speed used during the takeoff roll?

Why does Surtur say that Thor is Asgard's doom?

How are passwords stolen from companies if they only store hashes?

Should I be concerned about student access to a test bank?

Animating wave motion in water

UK Tourist Visa- Enquiry

Unfrosted light bulb

Jem'Hadar, something strange about their life expectancy

How do researchers send unsolicited emails asking for feedback on their works?

Error in master's thesis, I do not know what to do

Would this string work as string?

Hackerrank All Women's Codesprint 2019: Name the Product

Hot air balloons as primitive bombers

Could any one tell what PN is this Chip? Thanks~



Unable to get newly inserted Product's Id using After Plugin for Catalog Product save controller method


Magento 2.2.5: How to get product id after product saved using pluginHow to add a saveAndContinueEdit type button in admin view order?Plugin, get original function parameters in after methodMagento 2 add new Button in admin ControllerAdd an extension to edit the product name quickly in admin. Magento 2Magento 2: Add a product to the cart programmaticallyMagento 1.9 Save action for Catalog Product custom tabI have created one field using product form field for my price i want save my field value at product creation time from backend magento2Magento 2.2.5: How to get product id after product saved using pluginHow to clone/copy product in magento 2 properly wayMagento 2 plugin change price of products that have a custom attribute with













1















I have created interceptor for catalog product controller's save action



<type name="MagentoCatalogControllerAdminhtmlProductSave">
<plugin name="ricky_catalog_save_product"
type="RickyCatalogPluginProductSave" sortOrder="10"
/>
</type>


My plugin class is below



namespace RickyCatalogPluginProduct; 

class Save {
public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
$productId = $subject->productId; // This is not working
/**
echo $result->getProduct->getId(); die("prodid");
echo $subject->getProduct->getId(); die("prodid");
Both throw exception: Undefined property $getProduct
**/

/** $productId is provided in excute method in Save class
in MagentoCatalogControllerAdminhtmlProductSave **/
}
}


For some reasons I have to use Plugin (Interceptor Design Pattern), I know I can get newly created prouduct id by using observer for catalog_product_save_after event. But please provide solution for plugins.



I am asking this after visiting This Solution



Thanks for help :)










share|improve this question

























  • Try this $subject->getProduct->getId(); @KapilDevSingh

    – Prathap Gunasekaran
    1 hour ago











  • I tried this, but its throws exception Undefined property: MagentoCatalogControllerAdminhtmlProductSaveInterceptor::$getProduct well thanks for response @PrathapGunasekaran

    – Kapil Dev Singh
    1 hour ago











  • use $result variable .

    – Anand Ontigeri
    1 hour ago











  • Thankyou for reply @AnandOntigeri, I have tried this one also but this also throws same exception.

    – Kapil Dev Singh
    1 hour ago











  • @PrathapGunasekaran , This also not worked, even it ended with FATAL ERROR Fatal error: Uncaught Error: Call to undefined method MagentoBackendModelViewResultRedirectInterceptor::getAllItems()

    – Kapil Dev Singh
    34 mins ago
















1















I have created interceptor for catalog product controller's save action



<type name="MagentoCatalogControllerAdminhtmlProductSave">
<plugin name="ricky_catalog_save_product"
type="RickyCatalogPluginProductSave" sortOrder="10"
/>
</type>


My plugin class is below



namespace RickyCatalogPluginProduct; 

class Save {
public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
$productId = $subject->productId; // This is not working
/**
echo $result->getProduct->getId(); die("prodid");
echo $subject->getProduct->getId(); die("prodid");
Both throw exception: Undefined property $getProduct
**/

/** $productId is provided in excute method in Save class
in MagentoCatalogControllerAdminhtmlProductSave **/
}
}


For some reasons I have to use Plugin (Interceptor Design Pattern), I know I can get newly created prouduct id by using observer for catalog_product_save_after event. But please provide solution for plugins.



I am asking this after visiting This Solution



Thanks for help :)










share|improve this question

























  • Try this $subject->getProduct->getId(); @KapilDevSingh

    – Prathap Gunasekaran
    1 hour ago











  • I tried this, but its throws exception Undefined property: MagentoCatalogControllerAdminhtmlProductSaveInterceptor::$getProduct well thanks for response @PrathapGunasekaran

    – Kapil Dev Singh
    1 hour ago











  • use $result variable .

    – Anand Ontigeri
    1 hour ago











  • Thankyou for reply @AnandOntigeri, I have tried this one also but this also throws same exception.

    – Kapil Dev Singh
    1 hour ago











  • @PrathapGunasekaran , This also not worked, even it ended with FATAL ERROR Fatal error: Uncaught Error: Call to undefined method MagentoBackendModelViewResultRedirectInterceptor::getAllItems()

    – Kapil Dev Singh
    34 mins ago














1












1








1


1






I have created interceptor for catalog product controller's save action



<type name="MagentoCatalogControllerAdminhtmlProductSave">
<plugin name="ricky_catalog_save_product"
type="RickyCatalogPluginProductSave" sortOrder="10"
/>
</type>


My plugin class is below



namespace RickyCatalogPluginProduct; 

class Save {
public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
$productId = $subject->productId; // This is not working
/**
echo $result->getProduct->getId(); die("prodid");
echo $subject->getProduct->getId(); die("prodid");
Both throw exception: Undefined property $getProduct
**/

/** $productId is provided in excute method in Save class
in MagentoCatalogControllerAdminhtmlProductSave **/
}
}


For some reasons I have to use Plugin (Interceptor Design Pattern), I know I can get newly created prouduct id by using observer for catalog_product_save_after event. But please provide solution for plugins.



I am asking this after visiting This Solution



Thanks for help :)










share|improve this question
















I have created interceptor for catalog product controller's save action



<type name="MagentoCatalogControllerAdminhtmlProductSave">
<plugin name="ricky_catalog_save_product"
type="RickyCatalogPluginProductSave" sortOrder="10"
/>
</type>


My plugin class is below



namespace RickyCatalogPluginProduct; 

class Save {
public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
$productId = $subject->productId; // This is not working
/**
echo $result->getProduct->getId(); die("prodid");
echo $subject->getProduct->getId(); die("prodid");
Both throw exception: Undefined property $getProduct
**/

/** $productId is provided in excute method in Save class
in MagentoCatalogControllerAdminhtmlProductSave **/
}
}


For some reasons I have to use Plugin (Interceptor Design Pattern), I know I can get newly created prouduct id by using observer for catalog_product_save_after event. But please provide solution for plugins.



I am asking this after visiting This Solution



Thanks for help :)







product controllers magento2.3 interceptor after-plugin






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 1 hour ago







Kapil Dev Singh

















asked 1 hour ago









Kapil Dev SinghKapil Dev Singh

207




207













  • Try this $subject->getProduct->getId(); @KapilDevSingh

    – Prathap Gunasekaran
    1 hour ago











  • I tried this, but its throws exception Undefined property: MagentoCatalogControllerAdminhtmlProductSaveInterceptor::$getProduct well thanks for response @PrathapGunasekaran

    – Kapil Dev Singh
    1 hour ago











  • use $result variable .

    – Anand Ontigeri
    1 hour ago











  • Thankyou for reply @AnandOntigeri, I have tried this one also but this also throws same exception.

    – Kapil Dev Singh
    1 hour ago











  • @PrathapGunasekaran , This also not worked, even it ended with FATAL ERROR Fatal error: Uncaught Error: Call to undefined method MagentoBackendModelViewResultRedirectInterceptor::getAllItems()

    – Kapil Dev Singh
    34 mins ago



















  • Try this $subject->getProduct->getId(); @KapilDevSingh

    – Prathap Gunasekaran
    1 hour ago











  • I tried this, but its throws exception Undefined property: MagentoCatalogControllerAdminhtmlProductSaveInterceptor::$getProduct well thanks for response @PrathapGunasekaran

    – Kapil Dev Singh
    1 hour ago











  • use $result variable .

    – Anand Ontigeri
    1 hour ago











  • Thankyou for reply @AnandOntigeri, I have tried this one also but this also throws same exception.

    – Kapil Dev Singh
    1 hour ago











  • @PrathapGunasekaran , This also not worked, even it ended with FATAL ERROR Fatal error: Uncaught Error: Call to undefined method MagentoBackendModelViewResultRedirectInterceptor::getAllItems()

    – Kapil Dev Singh
    34 mins ago

















Try this $subject->getProduct->getId(); @KapilDevSingh

– Prathap Gunasekaran
1 hour ago





Try this $subject->getProduct->getId(); @KapilDevSingh

– Prathap Gunasekaran
1 hour ago













I tried this, but its throws exception Undefined property: MagentoCatalogControllerAdminhtmlProductSaveInterceptor::$getProduct well thanks for response @PrathapGunasekaran

– Kapil Dev Singh
1 hour ago





I tried this, but its throws exception Undefined property: MagentoCatalogControllerAdminhtmlProductSaveInterceptor::$getProduct well thanks for response @PrathapGunasekaran

– Kapil Dev Singh
1 hour ago













use $result variable .

– Anand Ontigeri
1 hour ago





use $result variable .

– Anand Ontigeri
1 hour ago













Thankyou for reply @AnandOntigeri, I have tried this one also but this also throws same exception.

– Kapil Dev Singh
1 hour ago





Thankyou for reply @AnandOntigeri, I have tried this one also but this also throws same exception.

– Kapil Dev Singh
1 hour ago













@PrathapGunasekaran , This also not worked, even it ended with FATAL ERROR Fatal error: Uncaught Error: Call to undefined method MagentoBackendModelViewResultRedirectInterceptor::getAllItems()

– Kapil Dev Singh
34 mins ago





@PrathapGunasekaran , This also not worked, even it ended with FATAL ERROR Fatal error: Uncaught Error: Call to undefined method MagentoBackendModelViewResultRedirectInterceptor::getAllItems()

– Kapil Dev Singh
34 mins ago










1 Answer
1






active

oldest

votes


















2














The variable $product is not accessible from outside the save method. The only exceptioon is the event controller_action_catalog_product_save_entity_after.
But the product builder puts the product into registry, so you may access the product from there.
This code should work in my opinion, but I didn't test it:



    public function __construct(
MagentoFrameworkRegistry $registry
)
{
$this->registry = $registry;
}

public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
//get the product from registry
$product = $this->registry->registry('current_product');
$productId = $product->getId();

return $result;
}





share|improve this answer
























  • You didn't tested but I applied, It works like a charm. ThankYou. So basically if we want to pass variables from save (Controller) to outside then we can use registry.

    – Kapil Dev Singh
    21 mins ago











  • @helgeb Registry is deprecated in magento 2.3, Should not be used github.com/magento/magento2/blob/…

    – Vishwas Bhatnagar
    11 mins ago











  • +1 nice answer mate @HelgeB

    – Prathap Gunasekaran
    9 mins ago











  • @VishwasBhatnagar yes, I know, but it is the only way I see to access the product using a plugin. I would rather use the event but the question was about the plugin usage

    – HelgeB
    7 mins ago











Your Answer








StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "479"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f266434%2funable-to-get-newly-inserted-products-id-using-after-plugin-for-catalog-product%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









2














The variable $product is not accessible from outside the save method. The only exceptioon is the event controller_action_catalog_product_save_entity_after.
But the product builder puts the product into registry, so you may access the product from there.
This code should work in my opinion, but I didn't test it:



    public function __construct(
MagentoFrameworkRegistry $registry
)
{
$this->registry = $registry;
}

public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
//get the product from registry
$product = $this->registry->registry('current_product');
$productId = $product->getId();

return $result;
}





share|improve this answer
























  • You didn't tested but I applied, It works like a charm. ThankYou. So basically if we want to pass variables from save (Controller) to outside then we can use registry.

    – Kapil Dev Singh
    21 mins ago











  • @helgeb Registry is deprecated in magento 2.3, Should not be used github.com/magento/magento2/blob/…

    – Vishwas Bhatnagar
    11 mins ago











  • +1 nice answer mate @HelgeB

    – Prathap Gunasekaran
    9 mins ago











  • @VishwasBhatnagar yes, I know, but it is the only way I see to access the product using a plugin. I would rather use the event but the question was about the plugin usage

    – HelgeB
    7 mins ago
















2














The variable $product is not accessible from outside the save method. The only exceptioon is the event controller_action_catalog_product_save_entity_after.
But the product builder puts the product into registry, so you may access the product from there.
This code should work in my opinion, but I didn't test it:



    public function __construct(
MagentoFrameworkRegistry $registry
)
{
$this->registry = $registry;
}

public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
//get the product from registry
$product = $this->registry->registry('current_product');
$productId = $product->getId();

return $result;
}





share|improve this answer
























  • You didn't tested but I applied, It works like a charm. ThankYou. So basically if we want to pass variables from save (Controller) to outside then we can use registry.

    – Kapil Dev Singh
    21 mins ago











  • @helgeb Registry is deprecated in magento 2.3, Should not be used github.com/magento/magento2/blob/…

    – Vishwas Bhatnagar
    11 mins ago











  • +1 nice answer mate @HelgeB

    – Prathap Gunasekaran
    9 mins ago











  • @VishwasBhatnagar yes, I know, but it is the only way I see to access the product using a plugin. I would rather use the event but the question was about the plugin usage

    – HelgeB
    7 mins ago














2












2








2







The variable $product is not accessible from outside the save method. The only exceptioon is the event controller_action_catalog_product_save_entity_after.
But the product builder puts the product into registry, so you may access the product from there.
This code should work in my opinion, but I didn't test it:



    public function __construct(
MagentoFrameworkRegistry $registry
)
{
$this->registry = $registry;
}

public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
//get the product from registry
$product = $this->registry->registry('current_product');
$productId = $product->getId();

return $result;
}





share|improve this answer













The variable $product is not accessible from outside the save method. The only exceptioon is the event controller_action_catalog_product_save_entity_after.
But the product builder puts the product into registry, so you may access the product from there.
This code should work in my opinion, but I didn't test it:



    public function __construct(
MagentoFrameworkRegistry $registry
)
{
$this->registry = $registry;
}

public function afterExecute(
MagentoCatalogControllerAdminhtmlProductSave $subject,
$result)
{
//get the product from registry
$product = $this->registry->registry('current_product');
$productId = $product->getId();

return $result;
}






share|improve this answer












share|improve this answer



share|improve this answer










answered 39 mins ago









HelgeBHelgeB

2,6131320




2,6131320













  • You didn't tested but I applied, It works like a charm. ThankYou. So basically if we want to pass variables from save (Controller) to outside then we can use registry.

    – Kapil Dev Singh
    21 mins ago











  • @helgeb Registry is deprecated in magento 2.3, Should not be used github.com/magento/magento2/blob/…

    – Vishwas Bhatnagar
    11 mins ago











  • +1 nice answer mate @HelgeB

    – Prathap Gunasekaran
    9 mins ago











  • @VishwasBhatnagar yes, I know, but it is the only way I see to access the product using a plugin. I would rather use the event but the question was about the plugin usage

    – HelgeB
    7 mins ago



















  • You didn't tested but I applied, It works like a charm. ThankYou. So basically if we want to pass variables from save (Controller) to outside then we can use registry.

    – Kapil Dev Singh
    21 mins ago











  • @helgeb Registry is deprecated in magento 2.3, Should not be used github.com/magento/magento2/blob/…

    – Vishwas Bhatnagar
    11 mins ago











  • +1 nice answer mate @HelgeB

    – Prathap Gunasekaran
    9 mins ago











  • @VishwasBhatnagar yes, I know, but it is the only way I see to access the product using a plugin. I would rather use the event but the question was about the plugin usage

    – HelgeB
    7 mins ago

















You didn't tested but I applied, It works like a charm. ThankYou. So basically if we want to pass variables from save (Controller) to outside then we can use registry.

– Kapil Dev Singh
21 mins ago





You didn't tested but I applied, It works like a charm. ThankYou. So basically if we want to pass variables from save (Controller) to outside then we can use registry.

– Kapil Dev Singh
21 mins ago













@helgeb Registry is deprecated in magento 2.3, Should not be used github.com/magento/magento2/blob/…

– Vishwas Bhatnagar
11 mins ago





@helgeb Registry is deprecated in magento 2.3, Should not be used github.com/magento/magento2/blob/…

– Vishwas Bhatnagar
11 mins ago













+1 nice answer mate @HelgeB

– Prathap Gunasekaran
9 mins ago





+1 nice answer mate @HelgeB

– Prathap Gunasekaran
9 mins ago













@VishwasBhatnagar yes, I know, but it is the only way I see to access the product using a plugin. I would rather use the event but the question was about the plugin usage

– HelgeB
7 mins ago





@VishwasBhatnagar yes, I know, but it is the only way I see to access the product using a plugin. I would rather use the event but the question was about the plugin usage

– HelgeB
7 mins ago


















draft saved

draft discarded




















































Thanks for contributing an answer to Magento Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f266434%2funable-to-get-newly-inserted-products-id-using-after-plugin-for-catalog-product%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Paper upload error, “Upload failed: The top margin is 0.715 in on page 3, which is below the required...

Emraan Hashmi Filmografia | Linki zewnętrzne | Menu nawigacyjneGulshan GroverGulshan...

How can I write this formula?newline and italics added with leqWhy does widehat behave differently if I...