- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-22-2019
11:35 PM
08-22-2019
11:35 PM
may be stupid question, how can i add if condition for my foreach loop,
my_observer :
<?php class Gta_GetOrderDetails_Model_Observer { public function getdetailsafterorder($Observer) { $order = $Observer->getEvent()->getOrder(); $items = $order->getAllItems(); $shipping_state = $Observer->getEvent()->getOrder()->getShippingAddress(); if($shipping_state()->getRegion() == 'california') { foreach($items as $item) { $sku = $item->getSku(); $name= $item->getName(); $qty = $item->getQtyOrdered(); $price = $item->getPrice(); $shipping_state = $Observer->getEvent()->getOrder()->getShippingAddress(); $loggerInfo = ['sku' => $sku, 'name' => $name, 'qty' => $qty, 'price' => $price]; Mage::log(json_encode(print_r($loggerInfo, true)), null, 'event.log', true); } } ### start test observer ### // $order = $Observer->getEvent(); // Mage::log($order->getName(),null,'event.log'); ### end test observer ### } } ?>
I just want shipping state as my filter.
Solved! Go to Solution.
Labels:
1 ACCEPTED SOLUTION
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2019
02:23 AM
08-23-2019
02:23 AM
Hello @Aveeva
First print the $region value, if you getting from $order object, then add simple condition for $items
$region= $order->getRegion();
if($region== 'california') { foreach($items as $item) { $sku = $item->getSku(); $name= $item->getName(); $qty = $item->getQtyOrdered(); $price = $item->getPrice(); $loggerInfo = ['sku' => $sku, 'name' => $name, 'qty' => $qty, 'price' => $price]; Mage::log(json_encode(print_r($loggerInfo, true)), null, 'event.log', true); } }
If my answer is useful, please Accept as Solution & give Kudos
4 REPLIES 4
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2019
01:03 AM
08-23-2019
01:03 AM
Re: How can i add if condition for my foreach loop in Observer
Hello @Aveeva
You can directly get region value from $order object.
$region= $order->getRegion();
OR
$shipping_state = $Observer->getEvent()->getOrder()->getShippingAddress();
$region_code=$shipping_state->getRegionCode();
If my answer is useful, please Accept as Solution & give Kudos
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2019
01:57 AM
08-23-2019
01:57 AM
Re: How can i add if condition for my foreach loop in Observer
@Binod Yadav Yes, how can i use state as a filter using if condition?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2019
02:13 AM
08-23-2019
02:13 AM
Re: How can i add if condition for my foreach loop in Observer
Hello @Aveeva
As per your condition in script.
if($shipping_state()->getRegion() == 'california')
What you want to implement further logic with
$items
if you get the $region value from ShippingAddress
If my answer is useful, please Accept as Solution & give Kudos
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-23-2019
02:23 AM
08-23-2019
02:23 AM
Hello @Aveeva
First print the $region value, if you getting from $order object, then add simple condition for $items
$region= $order->getRegion();
if($region== 'california') { foreach($items as $item) { $sku = $item->getSku(); $name= $item->getName(); $qty = $item->getQtyOrdered(); $price = $item->getPrice(); $loggerInfo = ['sku' => $sku, 'name' => $name, 'qty' => $qty, 'price' => $price]; Mage::log(json_encode(print_r($loggerInfo, true)), null, 'event.log', true); } }
If my answer is useful, please Accept as Solution & give Kudos