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

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

2
การสร้างตัวเลือกที่กำหนดเองและรางวัลให้กับสินค้าที่เพิ่งเพิ่มเข้าสู่ตะกร้าโดยใช้ผู้สังเกตการณ์
ฉันต้องการที่จะเพิ่มตัวเลือกที่กำหนดเองเพื่ออ้างคำพูดโดยใช้ผู้สังเกตการณ์ที่ผู้สังเกตการณ์ checkoutCartProductAddAfter เหตุการณ์และไฟหลังจากสินค้าเพิ่มลงในรถเข็น public function checkoutCartProductAddAfter(Varien_Event_Observer $observer) { $item = $observer->getQuoteItem(); $item->addOption(new Varien_Object( array( 'product' => $item->getProduct(), 'label' => 'Free Gifts', 'value' => 'Spend $50 and get gift product worth $9.99' ) )); return; } ผู้สังเกตการณ์ของฉันทำงาน แต่ฉันไม่สามารถเพิ่มตัวเลือกที่กำหนดเองให้กับผลิตภัณฑ์ที่เพิ่มเข้ามาได้ โปรดให้ความช่วยเหลือในการเพิ่มตัวเลือกที่กำหนดเองโดยใช้ผู้สังเกตการณ์เพื่อเพิ่งเพิ่มผลิตภัณฑ์

4
เมื่อใดที่จะส่งเหตุการณ์ในโมดูลที่กำหนดเอง
นี่เป็นคำถามเกี่ยวกับทั้ง Magento 1 และ Magento 2 ฉันเข้าใจว่าในทางปฏิบัติผู้พัฒนาโมดูลบุคคลที่สามได้รับการสนับสนุนให้จัดส่งกิจกรรมในโมดูลที่กำหนดเองเพื่อให้ทำงานกับโมดูลอื่นได้ง่ายขึ้น ผมอยากจะรู้ว่า: นักพัฒนาควรจัดส่งกิจกรรมในโมดูลที่กำหนดเอง มีจุดแนะนำให้จัดส่งกิจกรรมใดบ้าง เช่นตัวควบคุมโมเดลบล็อกผู้ช่วยเหลือผู้สังเกตการณ์? เหตุการณ์ที่ส่งผลกระทบต่อประสิทธิภาพการทำงานอย่างไร

2
การเปลี่ยนเค้าโครงของการนำทางแบบเลเยอร์
ฉันมีการนำทางแบบเลเยอร์และลูกค้าต้องการมี<select/>เขตข้อมูลแทนรายการลิงก์ที่มีความยาว ฉันคิดถึงการเปลี่ยนแม่แบบด้วยผู้สังเกตการณ์หากชื่อ / รหัสของตัวกรองตรงกัน มีข้อคิดเห็นหรือคำแนะนำที่ดีกว่านี้ไหม ทางเลือกในการเปลี่ยนเทมเพลตอาจจะเขียนทับ / เขียนบล็อกใหม่หรือเปลี่ยนคลาสบล็อกสำหรับตัวกรองทั้งสองเท่านั้น เหตุการณ์ใดที่จะใช้สำหรับการเปลี่ยนแม่แบบ ฉันมีปัญหาเดียวกันกับที่นี่/programming/14524791/magento-enable-or-disable-a-module-in-code/14529629เพราะฉันมีผู้สังเกตการณ์ที่เปลี่ยนสิ่งโครงร่าง นี่เป็นเพียงธีมที่เกี่ยวข้อง ดังนั้นการตรวจสอบธีมก่อนใช้งานการอัปเดตอาจเป็นความคิดที่ดีใช่ไหม

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

2
วิธีบันทึกแอตทริบิวต์ที่กำหนดเองของรูปภาพใน magento 2
ฉันต้องแสดงภาพผลิตภัณฑ์บางส่วนที่ด้านหน้าตามเงื่อนไข: ควรใช้การตรวจสอบกระจกเงาเสมือน <?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Dcw\Vm\Observer; use Magento\Framework\Event\ObserverInterface; class ChangeTemplateObserver extends \Magento\ProductVideo\Observer\ChangeTemplateObserver { /** * @param mixed $observer * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { $observer->getBlock()->setTemplate('Dcw_Vm::helper/gallery.phtml'); } } แม่แบบ: <div class="admin__field …

1
มีเหตุการณ์หรือจุดปลั๊กอินเมื่อกฎรถเข็นไม่ถูกต้องอีกต่อไปหรือไม่
มีเหตุการณ์หรือสถานที่ที่ฉันสามารถเสริมได้หรือไม่เมื่อกฎราคาตะกร้าสินค้าไม่ถูกต้องอีกต่อไป (เช่นเมื่อหมดอายุหรือหากคุณเปลี่ยนปริมาณของผลิตภัณฑ์อื่นที่ไม่ใช้แล้ว) ฉันรู้ว่ามันถูกลบออกจากรถเข็นโดยอัตโนมัติ แต่ฉันไม่สามารถหาสถานที่ที่เกิดขึ้นในรหัสได้ ฉันกำลังเขียนโมดูลที่เพิ่มผลิตภัณฑ์ฟรีลงในรถเข็นสำหรับคูปองที่ผลรวมย่อยมากกว่าจำนวน X มันทำงานได้ทั้งหมดยกเว้นเมื่อลดปริมาณสินค้าในรถเข็นที่ผลรวมย่อยต่ำกว่า X คูปองถูกลบ แต่สินค้าของฉันยังคงอยู่ในรถเข็น จนถึงตอนนี้ฉันได้แตะที่กิจกรรมต่อไปนี้เพื่อทำสิ่งที่ฉันต้องการจนถึงตอนนี้ ... salesrule_validator_process checkout_cart_update_items_after sales_quote_collect_totals_before ฉันพบว่าสิ่งMagento\Quote\Model\CouponManagementที่ดูเหมือนจะมีความน่าเชื่อถือเนื่องจากมันมีset()และremove()วิธีการ แต่พวกเขาดูเหมือนจะไม่ได้รับการเรียกเมื่อมีการปรับปรุงรถเข็น ในcheckout_cart_update_items_afterมันดูเหมือนว่าสถานที่ตรรกะฉันสามารถตรวจสอบได้ แต่ดูเหมือนว่ากฎยังคงตั้งตาม$cart->getQuote()->getAppliedRuleIds() UPDATE: ฉันลงเอยด้วยการเพิ่มผู้สังเกตการณ์สำหรับcheckout_cart_save_afterเหตุการณ์ที่ทำงานหลังจากcollectTotals()นั้นดังนั้นจึงรู้ว่ากฎยังคงอยู่ในรถเข็นหรือไม่ แล้วฉันเป็นพื้นเปรียบเทียบ$quote->getAppliedRuleIds()กับ$quote->getOrigData('applied_rule_ids')เพื่อดูว่ากฎได้ถูกลบออก ฉันรู้สึกว่ามีวิธีที่ดีกว่าในการทำเช่นนี้ แต่ใช้งานได้ในขณะนี้ ฉันยังมีปัญหากับคูปองที่หมดอายุแม้ว่า ...

3
Magento2 - วิธีการหยุดผลิตภัณฑ์ไม่ให้ถูกเพิ่มลงในรถเข็นโดยทางโปรแกรม?
สิ่งที่ฉันต้องการทำคือถ้าแอตทริบิวต์ที่กำหนดเองของฉันถูกตั้งค่าในเครื่องหมายคำพูดแล้วฉันไม่ต้องการให้ผลิตภัณฑ์ใด ๆ ที่จะเพิ่มในรถเข็น แอตทริบิวต์ที่กำหนดเองของฉันถูกตั้งค่าอย่างถูกต้อง หากต้องการหยุดการเพิ่มสินค้าลงในรถเข็นฉันได้เขียนผู้สังเกตการณ์ซึ่งสังเกตเหตุการณ์นี้ controller_action_predispatch_checkout_cart_add รหัสไฟล์ผู้สังเกตการณ์ของฉัน: public function execute(\Magento\Framework\Event\Observer $observer) { $addedItemId = $observer->getRequest()->getParam('product'); $quote = $this->_cart->getQuote(); if(!empty($quote)) { $customAttribute = $quote->getData('custom_attribute'); if(!empty($customAttribute)) { $controller = $observer->getControllerAction(); $storeId = $this->_objectManager->get('Magento\Store\Model\StoreManagerInterface')->getStore()->getId(); $product = $this->_productRepository->getById($addedItemId, false, $storeId); $observer->getRequest()->setParam('product', null); $this->_messageManager->addError(__('This product cannot be added to your cart.')); echo false; $this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, …

2
ความแตกต่างระหว่าง "sales_order_place_after" และ "sales_order_save_after" หรือไม่
Magento 1 และ Magento 2 ทั้งคู่มีสองเหตุการณ์: sales_order_place_after sales_order_save_after. ฉันมีความสับสนเกี่ยวกับพวกเขาสิ่งที่แตกต่างรายละเอียดระหว่างพวกเขาคืออะไร? สถานการณ์ใดที่จะใช้

2
ฉันจะรับข้อมูลลูกค้าจากผู้สังเกตการณ์หลังจากลงชื่อเข้าใช้สำเร็จได้อย่างไร
ฉันได้สร้างโมดูลที่กำหนดเองซึ่งฉันมีไฟล์ผู้สังเกตการณ์ ฉันต้องการแสดงข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ที่เข้าสู่ระบบ

3
ผู้สังเกตการณ์คนไหนที่จะใช้หลังจากประสบความสำเร็จในการสั่งซื้อ Magento 2?
ฉันกำลังทำงานกับส่วนขยายของ Magento 2 และส่วนหนึ่งของฟีเจอร์นี้คือการส่งข้อมูลเกี่ยวกับคำสั่งซื้อไปยังแอปพลิเคชันภายนอกโดยใช้บริการเว็บ ฉันต้องการที่จะผลักดันข้อมูลนี้หลังจากที่สั่งซื้อสินค้าในการชำระเงิน ในขณะนี้ฉันใช้งานเหตุการณ์checkout_onepage_controller_success_actionซึ่งทำให้วิธีการสร้างคำสั่งซื้อในแอปภายนอก /etc/frontend/events.xmlฉันวางเหตุการณ์นี้ได้ใน ถึงตอนนี้มันใช้งานได้ แต่ฉันพบปัญหาเกี่ยวกับสถานะคำสั่งซื้อ บางครั้งคำสั่งซื้อที่ยังคงอยู่ในpendingสถานะและบางครั้งอื่น ๆ processingการสั่งซื้ออยู่ใน เหตุผลนี้เป็นเพราะวิธีการชำระเงินครั้งแรกเริ่มต้นคำสั่งซื้อเป็นรอดำเนินการและหลังจากการชำระเงินได้รับการอนุมัติคำสั่งซื้อเปลี่ยนไปประมวลผล ฉันต้องการผลักดันprocessingคำสั่งซื้อเท่านั้น ดูเหมือนว่าบางครั้งเหตุการณ์checkout_onepage_controller_success_actionจะทำงานก่อนที่การชำระเงินจะได้รับอนุญาตและนี่เป็นสาเหตุของปัญหา ความคิดวิธีการแก้ปัญหานี้? วิธีการที่ฉันสามารถตรวจสอบการชำระเงินการประมวลผลการทำงานก่อนที่ผมจะเรียกใช้รหัสของฉันในcheckout_onepage_controller_success_action? ตามรหัสของฉัน: events.xml <?xml version="1.0"?> <!-- /** * Copyright © 2017 companyname.com */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="checkout_onepage_controller_success_action"> <observer name="companyname_order_success" instance="Companyname\Shipping\Observer\CreateCompanynameOrderObserver" /> </event> </config> CreateCompanynameOrderObserver.php /** * Create an order in Companyname when …

4
ดูการเพิ่มกิจกรรมรถเข็น - รหัสรายการอ้างว่างเปล่า
ฉันพยายามที่จะจับเหตุการณ์ที่เกิดขึ้นเมื่อมีการเพิ่มรายการลงในรถเข็น ฉันกำลังดูเหตุการณ์ต่อไปนี้: checkout_cart_product_add_after ตามแหล่งข้อมูลวีโอไอพีเหตุการณ์นี้ถูกไล่ออกหลังจากทุกอย่างถูกทำเพื่ออ้างอิง แต่เมื่อฉันเข้าถึงรหัสรถเข็นและรหัสคำพูดค่าว่างเปล่า: $quoteItem = $observer->getQuoteItem(); $quote_item_id = $quoteItem->getItemId(); $cart = Mage::getSingleton('checkout/session'); $quote_id= $cart->getQuoteId(); ด้านบนส่งคืนค่าว่างสำหรับรหัสทั้งสองเมื่อไม่มีรายการในรถเข็นหากรถเข็นมีรายการที่รหัสรถเข็นมีมูลค่าแล้ว แต่ quote_item_id ไม่ได้ สังเกตว่ามีการถามก่อนหน้านี้ แต่คำถามไม่เคยได้รับการแก้ไขและการสนทนาสิ้นสุดลงจากปัญหานี้ ฉันต้องการ quote_item_id

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

1
ลบผู้สังเกตการณ์ออกจากส่วนขยายของบุคคลที่สาม
ฉันได้ติดตั้งโมดูลบล็อกบนแพลตฟอร์ม Magento 2 ของฉันแล้ว โมดูลบล็อกนี้มีผู้สังเกตการณ์ซึ่งจะเพิ่มรายการเมนูใหม่ลงในการนำทางหลักโดยอัตโนมัติ ฉันต้องการหยุดสิ่งนี้ events.xmlไฟล์มีลักษณะเช่นนี้ <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="page_block_html_topmenu_gethtml_before"> <observer name="aw_blog_add_topmenu_items" instance="Aheadworks\Blog\Observer\AddBlogToTopmenuItemsObserver" /> </event> </config> ในขณะที่คุณสามารถเห็นมันอ้างอิงผู้สังเกตการณ์ที่เพิ่มลิงค์ในการนำทางหลัก การลบevents.xmlแก้ปัญหาของฉัน แต่ฉันกำลังมองหาวิธีที่ไม่เกี่ยวข้องกับการแก้ไขไฟล์โมดูลหลัก

2
เหตุการณ์วีโอไอพีเพื่อคำนวณราคาเมื่อมีการเปลี่ยนแปลงฟิลด์ข้อความของตัวเลือกที่กำหนดเอง
ฉันกำลังพยายามสร้างผลิตภัณฑ์ที่มีฟิลด์ข้อความที่กำหนดเองสองฟิลด์: ความยาวและความกว้าง เมื่อผู้ใช้พิมพ์ทั้งความยาวและความกว้างราคาจะต้องคำนวณผ่านสูตรที่กำหนดเอง ฉันกำลังพยายามค้นหาเหตุการณ์ที่ถูกต้องในการเชื่อมต่อผู้สังเกตการณ์ใครรู้ว่าอาจเป็นอะไร นี่คือสิ่งที่ฉันรู้และได้ลอง 1) กล่องข้อความฟิลด์ที่กำหนดเองในมุมมองผลิตภัณฑ์มีเหตุการณ์ onchange ที่ฉันไม่ได้คิดวิธีการแตะยังผ่านเหตุการณ์ผู้สังเกตการณ์ - "opConfig.reloadPrice () 2) ถ้าฉันสร้างผู้สังเกตการณ์ในเหตุการณ์ sales_quote_add_item ฉันสามารถเปลี่ยนแปลงราคาผ่านสูตรเมื่อเพิ่มลงในรถเข็น ด้วยวิธีนี้ฉันยังต้องการวิธีเปลี่ยนในมุมมองผลิตภัณฑ์ก่อนที่จะเพิ่มลงในรถเข็น 3) ฉันได้ลองใช้งาน event catalog_product_get_final_price แล้ว แต่ดูเหมือนว่าจะเริ่มทำงานเมื่อโหลดหน้าผลิตภัณฑ์เท่านั้นดังนั้นหลังจากที่เพิ่มความยาวหรือความกว้างของผลิตภัณฑ์แล้วจะไม่เริ่มใหม่ ความคิดใด ๆ ที่จะได้รับการชื่นชมอย่างมาก!

3
กิจกรรม / ผู้สังเกตการณ์สำหรับการเปลี่ยนรหัสผ่านของลูกค้า?
ฉันกำลังมองหาวิธีที่จะขอเข้าร่วมในกรณีที่ลูกค้าเปลี่ยนรหัสผ่าน ดังนั้นหากมีคนเปลี่ยนรหัสผ่านในส่วนหน้าของลูกค้าฉันต้องการส่งอีเมลไปที่อื่น ฉันไม่ปรึกษารายการมากกว่าที่http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/แต่ไม่มีอะไรดูเหมือนเหตุการณ์สำหรับการเปลี่ยนรหัสผ่าน

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