คำถามติดแท็ก event-observer

เหตุการณ์ / ผู้สังเกตการณ์ใช้เพื่อทำงานกับ Magento แบบไดนามิกโดยไม่ต้องเปลี่ยนรหัสหลัก

15
ฉันจะหารายการกิจกรรมวีโอไอพีที่สมบูรณ์ได้ที่ไหน
ฉันรู้ว่า Magento มีระบบเบ็ดเหมือนที่เรียกว่าเหตุการณ์ ใครบ้างมีรายการที่สมบูรณ์หรือสคริปต์ที่สามารถใช้เพื่อกำหนดเหตุการณ์ที่สามารถเรียก?

2
Magento Event Observers: Singleton กับ Model
ดังนั้นวีโอไอพีจึงเสนอวิธีการประกาศผู้สังเกตการณ์ 2 วิธี Singleton and Model (ตัวอย่างใหม่) โดยการระบุ<type>แท็กใน Magento 1.x และโดยการระบุsharedแอตทริบิวต์ใน Magento 2 Magento วิธีที่ 1 ในการทำมัน <events> <event_name> <observers> <unique_observer_name> <type>model|object|singleton|null</type> <class>class/alias_here</class> <method>methdNameHere</method> </unique_observer_name> </observers> </event_name> </events> Magento 2 เวอร์ชั่น: <event name="event_name"> <observer name="unique_observer_name" instance="Class\Name\Here" method="methodNameHere" shared="true|false" /> </event> ดังนั้นในกรณีของวีโอไอพี 1, ถ้า<type>แท็กเป็นรูปแบบหรือวัตถุชั้นจะ instantiated Mage::getModel()กับ ถ้ามันหรือมันหายไปมันถูกสร้างโดยใช้singletonMage::getSingleton() ในกรณีของ Magento 2 ถ้าsharedเป็นเช่นfalseนั้นคลาสจะถูกสร้างโดยใช้$this->_observerFactory->create() …

2
วิธีการตรวจสอบว่าผู้ใช้เข้าสู่ระบบหรือไม่ในวีโอไอพี
ฉันกำลังทำแอพมือถือและฉันต้องการทราบวิธีการตรวจสอบว่าผู้ใช้เข้าสู่ระบบอยู่แล้วหรือไม่ มีเหตุการณ์ผู้สังเกตการณ์ที่จะติดตามหรือไม่ หากตรวจพบว่าบัญชีนั้นเข้าสู่ระบบผู้ใช้จะถูกนำไปยังหน้าข้อมูลบัญชี หากไม่มีผู้ใช้จะถูกนำไปที่หน้าเข้าสู่ระบบหรือการลงทะเบียน

4
ปรับเปลี่ยนอัตราภาษีในรายการราคารถเข็นและคำนวณใหม่
ฉันมีหมวดหมู่ของผลิตภัณฑ์ที่ (ถูกกฎหมาย) ต้องมีการเปลี่ยนแปลงอัตราภาษีของพวกเขาเมื่อคุณสั่งซื้อมากกว่าจำนวนที่แน่นอน ฉันได้ขยายแบบจำลองภาษีต่างๆเพื่อให้สามารถใช้งานได้เมื่อคุณเพิ่มผลิตภัณฑ์ใหม่ลงในรถเข็น แต่ฉันมีปัญหาเมื่อผู้ใช้อัปเดตปริมาณในรถเข็นหรือเพิ่มผลิตภัณฑ์เพิ่มเติมซึ่งทิปปริมาณที่มีอยู่ในรถเข็นเกินเกณฑ์แล้ว จำนวน ปัญหาที่ 1: ก่อนอื่นฉันไม่ใช่ 100% ที่จะต้องสังเกตเหตุการณ์ ฉันได้ลองแล้ว checkout_cart_save_after(ขึ้นอยู่กับสิ่งนี้ -> https://stackoverflow.com/questions/14362702/magento-programatically-update-cart-via-event ) checkout_cart_update_items_after(ขึ้นอยู่กับสิ่งนี้ -> https://stackoverflow.com/questions/5104482/programmatically-add-product-to-cart-with-price-change ) sales_quote_save_before(ขึ้นอยู่กับสิ่งนี้ -> https://stackoverflow.com/questions/7638858/magento-recalculate-cart-total-in-observer ) ปัญหาที่ 2: ฉันสามารถเข้าถึงรายการอ้างอิงจากรถเข็นมีหลายวิธีที่ดูเหมือนว่า ฉันยังสามารถวนซ้ำแต่ละรายการในรถเข็นอัปเดตคุณสมบัติของรายการเหล่านั้นแล้วบันทึกรายการ (อย่างน้อยก็ชั่วคราว) อย่างไรก็ตามฉันไม่สามารถบันทึกใบเสนอราคาและคำนวณภาษีใหม่ในเช็คเอาต์ได้ เหตุผลส่วนหนึ่งคือในขณะที่ฉันสามารถเข้าถึงใบเสนอราคารถเข็นได้ฉันไม่แน่ใจว่าวิธีการใดที่จะใช้เพื่อให้สามารถเขียนลงไปได้ สิ่งที่ฉันได้ลอง: สิ่งที่ฉันได้ลองในแง่ของการเข้าถึงเนื้อหาของรถเข็นนั้นขึ้นอยู่กับเหตุการณ์ที่ฉันสังเกตเห็น แต่ฉันได้ลองทั้งหมดต่อไปนี้แล้ว 1. $item = $observer->getQuoteItem; 2. $cart = Mage::getSingleton('checkout/cart'); $cartItems = $cart->getCart()->getItems(); 3. $cart = $observer->getData('cart'); $quote …

4
ความสับสนกับรหัสคำสั่งซื้อรหัสการเพิ่มคำสั่งซื้อและฉันไม่ได้รับรหัสคำสั่งซื้อเป็น 20001201
ฉันสับสนเล็กน้อยกับรหัสคำสั่งซื้อและรหัสการเพิ่มคำสั่งซื้อดังนั้นผู้ใดสามารถช่วยฉันให้เข้าใจความแตกต่างระหว่างสองสิ่งนี้ ฉันมีผู้สังเกตการณ์สำหรับsales_order_place_afterที่ฉันเก็บรายละเอียดการขายในตารางที่กำหนดเอง แต่ด้วย $orderId = $observer->getEvent()->getOrder()->getId(); ฉันได้รับรหัสคำสั่งตามรหัสปกติเช่น 112 หรือ 113 หรือ 110 ฯลฯ ไม่เหมือนกับ 20001201 แล้วรหัสคำสั่งซื้อจริงคืออะไร 20001201 หรือ 112 ฉันต้องการประมวลผลข้อมูลการสั่งซื้อเพิ่มเติมตามรหัสคำสั่งซื้อนี้ฉันใช้ 112, 113 ฯลฯ และใช้งานได้ แต่ฉันต้องชี้แจงให้ชัดเจน

4
ส่งคืน $ นี้หลังจากผู้สังเกตการณ์
ฉันเห็นข้อมูลที่ขัดแย้งกันบนอินเทอร์เน็ตและในโมดูลของบุคคลที่สามเหมือนกัน - มันเป็นข้อกำหนดหรือวิธีปฏิบัติที่ดีที่สุดในการกลับมา$thisที่จุดสิ้นสุดของวิธีการสังเกตการณ์หรือไม่? เช่น: MyCompany_Module_Model_Observer.php public function salesOrderSaveAfter($observer){ //do stuff return $this; }

2
Magento 2: Plugin vs Observer
ใน Magento 2 ข้อดีและข้อเสียของการใช้ปลั๊กอินกับผู้สังเกตการณ์เพื่อให้ได้อะไร ฉันเข้าใจว่าผู้สังเกตการณ์สมัครเป็นสมาชิกของเหตุการณ์ในขณะที่ปลั๊กอินสามารถกระโดดเข้ามาก่อนและ / หรือหลังจากวิธีการสาธารณะที่เรียกในคลาสวีโอไอพี แต่แน่นอนว่าพวกเขากำลังเข้าใกล้เส้นทางข้ามมากตอนนี้หรือไม่

1
วิธีสร้างผู้สังเกตการณ์ใหม่ในกิจกรรม catalog_product_save_before
ฉันต้องการสร้างคำอธิบายเมตาอัตโนมัติสำหรับผลิตภัณฑ์ของฉันโดยสร้างผู้สังเกตการณ์ใหม่ในกิจกรรม catalog_product_save_before ด้วยรหัสนี้: public function autoMetaDescription($observer) { $product = $observer->getEvent()->getProduct(); $metaDescription = "Buy ". $product->getName()." for Rs ".number_format($product->getFinalPrice(), 2)." at sitename.com | New Book | Authorised seller for ". $product->getAttributeText('publisher'); $product->setMetaDescription($metaDescription); } ฉันต้องเขียนโค้ดในโฟลเดอร์ / ไฟล์ใด

2
ตรวจจับการเปลี่ยนแปลงสินค้าคงคลัง
ฉันต้องการตรวจสอบเมื่อใดก็ตามที่ระดับสินค้าคงคลังของผลิตภัณฑ์เปลี่ยนแปลง ฉันประสบความสำเร็จในการใช้cataloginventory_stock_item_save_afterงานเหตุการณ์ที่เกิดขึ้นเมื่อมีการเปลี่ยนแปลงสินค้าคงคลังในแบ็กเอนด์หรือเมื่อมีการยกเลิกคำสั่งซื้อในส่วนหน้า (ผ่าน Paypal) แต่ไม่ได้ถูกทริกเกอร์เมื่อซื้อผลิตภัณฑ์จากส่วนหน้า ฉันขอเข้าร่วมcataloginventory_stock_item_save_afterกิจกรรมเช่นนี้: <global> <events> <cataloginventory_stock_item_save_after> <observers> <cataloginventory_stock_item_save_after_handler> <type>model</type> <class>stockchange/observer</class> <method>stockChange</method> </cataloginventory_stock_item_save_after_handler> </observers> </cataloginventory_stock_item_save_after> </events> <?php class FashionBunker_StockChange_Model_Observer { public function stockChange(Varien_Event_Observer $observer) { ฉันจำเป็นต้องใช้กิจกรรมอื่นเพื่อจับภาพการเปลี่ยนแปลงสินค้าคงคลังเมื่อลูกค้าสั่งซื้อบางอย่างหรือมีบางอย่างผิดปกติกับวิธีที่ฉันติดเข้ากับกิจกรรมหรือไม่

3
การสร้างตัวเลือกที่กำหนดเองในการบันทึกผลิตภัณฑ์
ฉันกำลังทำงานเพื่อสร้างตัวเลือกที่กำหนดเองสำหรับผลิตภัณฑ์ของฉันโดยอัตโนมัติทุกครั้งที่มีการสร้างผลิตภัณฑ์ สิ่งที่ฉันได้มาถึงตอนนี้คือผู้สังเกตการณ์ที่ยิงcatalog_product_save_beforeเหตุการณ์และรันโค้ดต่อไปนี้: //check that we haven't made the option already $options = $product->getProductOptions(); foreach ($options as $option) { if ($option['title'] == 'Auto Date & Time' && $option['type'] == 'date_time' && !$option['is_delete']) { //we've already added the option return; } } $options[] = array( 'title' => $product->getDateLabel(), 'type' => 'date_time', 'is_require' …


1
ทำไม SOAP v2 WS-I ของฉันถึงช้ามาก (7-10 วินาทีต่อการอัพเดตผลิตภัณฑ์)
เรากำลังใช้ Magento SOAP v2 API กับ WS-I ปัญหาคือว่าการโทร SOAP ช้ามาก (7-10 วินาทีต่อผลิตภัณฑ์!) เรากำลังเรียกแคตตาล็อกผลิตภัณฑ์อัพเดทโดยไม่มีรูปภาพ ร้านค้าของตัวเองทำงานได้ดีเพียงโทร SOAP ช้า เราเปิดใช้งานแคชและลบดัชนีเพื่อเพิ่มประสิทธิภาพ (ซึ่งช่วยในร้านค้าอื่น ๆ อีกมากมายเมื่อการนำเข้า SOAP ช้า) ฉันใส่ข้อความบันทึกในไฟล์ต่าง ๆ เพื่อหาตำแหน่งที่ผิดพลาด นี่คือบันทึกการรวมกันจากการเรียกใช้ฟังก์ชันและส่งเหตุการณ์: 20.03.2013 14:17:43: Mage_Api_V2_SoapController 20.03.2013 14:17:43: dispatchEvent: controller_action_postdispatch_api_v2_soap_index 20.03.2013 14:17:43: dispatchEvent: controller_action_postdispatch_api 20.03.2013 14:17:43: dispatchEvent: controller_action_postdispatch 20.03.2013 14:17:43: dispatchEvent: controller_front_send_response_before 20.03.2013 14:17:43: dispatchEvent: http_response_send_before 20.03.2013 …

5
วิธีรับภาพผลิตภัณฑ์และ URL ใน Magento 2
นี่คือผู้สังเกตการณ์ของฉัน: public function execute(\Magento\Framework\Event\Observer $observer) { $orderIds = $observer->getEvent()->getOrderIds(); $order = $this->_orderRepositoryInterface->get($orderIds[0]); $items =$order->getAllVisibleItems(); $productQuantity = array(); $productPrice = array(); $productName = array(); $productIds = array(); foreach($items as $item) { $productIds[]= $item->getProductId(); $productName[]= $item->getSku(); $productPrice[] = $item->getPrice(); $productQuantity[]= floor($item->getQtyOrdered()); } } ฉันจะรับภาพผลิตภัณฑ์และ URL ผลิตภัณฑ์จากรายการได้อย่างไร

3
วิธีรับกิจกรรม / ผู้สังเกตการณ์ใน magento 2
ใน Magento 1 ฉันสามารถรับรายการเหตุการณ์ / ผู้สังเกตการณ์ได้โดยdispatchEvent()วิธีการดีบั๊กจากMage.phpด้านล่าง /** * Dispatch event * * Calls all observer callbacks registered for this event * and multiple observers matching event name pattern * * @param string $name * @param array $data * @return Mage_Core_Model_App */ public static function dispatchEvent($name, array $data = array()) { …

2
Magento ล้มเหลวเมื่อพยายามบันทึกผลิตภัณฑ์ภายในผู้สังเกตการณ์เหตุการณ์ที่ส่วนหน้า?
ฉันมีฟังก์ชั่นที่เชื่อมโยงกับผู้สังเกตการณ์เหตุการณ์ หนึ่งในความต้องการคือเมื่อลูปผ่านข้อมูลรายการสั่งซื้อหากแอตทริบิวต์ผลิตภัณฑ์บางอย่างว่างเปล่าจะมีการร้องขอให้รับข้อมูลที่เฉพาะเจาะจงผ่านรูปแบบที่แยกต่างหาก (ทำงานได้ดี) รหัสปัญหาโดยทั่วไปจะลดลงถึงสิ่งนี้ foreach ($order->getAllItems() as $key => $item) { /** @var Tantor_Catalog_Model_Product $productData */ $productData = $item->getProduct(); $_item = Mage::getModel('catalog/product')->load($productData->getId()); $_item->setNetsuiteItemIid('foo'); $_item->save(); } อย่างไรก็ตามวีโอไอพีกำลังขว้างข้อยกเว้น 2014-03-05T21:14:14+00:00 ERR (3): exception 'Exception' with message 'Warning: Invalid argument supplied for foreach() in /var/www/html/app/code/core/Mage/Eav/Model/Entity/Abstract.php on line 1180' in /var/www/html/app/code/core/Mage/Core/functions.php:245 Stack trace: #0 /var/www/html/app/code/core/Mage/Eav/Model/Entity/Abstract.php(1180): …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.