Magento – get product url on product save after event in magento 2

event-observermagento-2.1productproduct-urls

I want to access product url from product collection after product save event in magento 2. i have try to some code but its return url with admin code and key.

i want to clean url no need to key and other paramenter in url.

event file

$product = $observer->getEvent()->getProduct();
echo "<pre>"; print_r($product->getProductUrl());

Get Following output :

admin/catalog/product/view/id/36/s/aim-analog-watch/key/7a1aeddd7ca27d6fc9daf52478db967c889d95d6d74350e6009ed44e06779fa5/

I Need to clean url

http://localhost/magento121new/aim-analog-watch.html

enter image description here

Best Answer

Save after is admin event so you can't get direct product url use below code

$id=$product->getId();

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();

//Load product by product id
$productData = $objectManager->create('Magento\Catalog\Model\ProductRepository')->getById($id);

echo $p_url=$product->getUrlModel()->getUrl($productData);
Related Topic