タグ付けされた質問 「event-observer」

イベント/オブザーバーは、コアコードを変更せずにMagentoと動的に連携するために使用されます。

3
イベントによって渡される文字列を変更するにはどうすればよいですか?
私のオブザーバー関数では、そのようなイベントによって渡される変数を取得します。 public function observerFunc(Varien_Event_Observer $observer) { $sth = $observer->getEvent()->getSth(); } sthがオブジェクトの場合、そのメソッドを呼び出すことで変更できます。しかしsth、それが単純な文字列である場合、どのように変更できますか?私は成功せずに以下を試しました: public function observerFunc(Varien_Event_Observer $observer) { $sth = $observer->getEvent()->getSth(); $observer->getEvent()->setSth('test'); $observer->setSth('test'); } 一部のイベントは文字列を変更できるトランスポートオブジェクトも渡すことを学びました(ありがとうAlex)が、イベントpage_block_html_topmenu_gethtml_afterはそうではありません。それで、なにかお手伝いできますか? 問題のイベントは次のようにディスパッチされ、$ htmlを変更します。 $html = $this->_getHtml($this->_menu, $childrenWrapClass); Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array( 'menu' => $this->_menu, 'html' => $html ));

3
Magento 2:どの拡張メカニズムを選択しますか?
コントローラーを拡張するには、設定の使用とプラグインの使用の2つの方法があります。しかし、私はそれを理解していません、どちらが良いのか、そしてプラグインと比較して好みの利点/欠点です。 <preference for="Magento\Checkout\Controller\Index\Index" type="mymodule\Helloworld\Controller\Index\Index" /> <type name="Magento\Catalog\Model\Product"> <plugin name="getname-test-module" type="mymodule\Helloworld\Model\Plugin\Product" sortOrder="10"/> </type>


3
customer_save_afterの新規顧客かどうかを判別
顧客が詳細を登録または保存したときに実行したいイベントがあります。このため、customer_register_successとcustomer_save_afterの2つのイベントを使用しています。私が抱えている問題は、customer_save_afterが常にと同じ実行で呼び出されるため、タスクが2回実行されることcustomer_register_successです。 元のデータを確認してを呼び出すことisObjectNewで、顧客が新しいかどうかを検出しようとしましたが、どちらもオブジェクトが実際には新しいものではないことを示すデータを返します。イベントのレジストリに何かを設定する前に、customer_save_afterイベントに顧客が登録しているかどうかを確認するにはどうすればよいcustomer_register_successですか?

4
Magento Observerイベント-操作の順序
catalog_model_product_duplicateイベントに機能を注入しようとしています。このモジュールの一部は、複製された製品の在庫状況も複製されるようにすることです。現在はそうではありません。 CatalogInventoryこのイベントを観察し、いくつかの標準的な株式情報を設定しているのがわかります。地元の人より先にコアイベントが解決されることを保証できますか?ここで信頼できる操作の順序はありますか?


1
Magentoのオブザーバーを使用して総計に新しい合計を追加しますか?
Magentoの総計にいくつか追加します。したがって、チェックアウトページでは、注文レビューセクションは次のようになります。 この追加料金は、いくつかの条件によって異なります。 私の質問は、チェックアウトページで総計を変更するにはどうすればよいですか?このために私がしたことは、モジュールを作成することです。私のコードを見てください: app / code / local / Locwiseship / Customprice / etc / config.xml <?xml version="1.0"?> <config> <modules> <Locwiseship_Customprice> <version>1.0.10</version> </Locwiseship_Customprice> </modules> <global> <events> <!-- Création éventuelle du lien de parrainage lors de la commande --> <sales_quote_collect_totals_after> <observers> <set_custom_price_locwiseship> <type>singleton</type> <class>Locwiseship_Customprice_Model_Sales_Quote_Address_Total_Mytotal</class> <method>collect</method> <method>fetch</method> </set_custom_price_locwiseship> </observers> </sales_quote_collect_totals_after> </events> </global> …

1
カートの放棄のオブザーバー
私は助けが必要です!!! APIを介して別のプラットフォームと統合するモジュールを作成しています。顧客登録用のオブザーバーまたはイベント(customer_register_success)をすでに取得しています。購入は完了しています(checkout_onepage_controller_success_action)。 私が必要とする助けは、オブザーバーに捨てられたカートをどのようにして入手できるか、またはその情報を取得してAPI経由で送信するための最良の方法は何でしょうか。

2
Magento 2:イベントオブザーバーの例外が画面に表示されない
カスタム拡張では、このようにオブザーバーを作成しています。 app\code\Vendor\Extension\etc\frontend\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="sales_quote_remove_item"> <observer name="sales_quote_remove_item_handler" instance="Vendor\Extension\Observer\RemovecartbeforeObserver" shared="false" /> </event> </config> そして私の観察者: app\code\Vendor\Extension\Observer\RemovecartbeforeObserver.php use Magento\Framework\Event\ObserverInterface; class RemovecartbeforeObserver implements ObserverInterface { public function execute(\Magento\Framework\Event\Observer $observer) { // HERE IS MY CODE $message = "THIS IS CUSTOM ERROR MESSAGE"; throw new \Magento\Framework\Exception\LocalizedException(__($message)); return; } } オブザーバー関数が呼び出されましたが、ページにカスタムエラーが表示されません。これのInstadeはそれがこのexception.logようなファイルに私のメッセージを示しています。 main.CRITICAL: …

2
Magento 2:オブザーバーイベント後のカタログ製品の保存
製品の編集セクションにカスタムの複数選択フィールドがあります。 カスタムテーブルの複数選択値の値。[製品の管理]セクションで、いずれかの値を選択して保存ボタンをクリックした場合。変更をテーブルに保存する必要があります。Observerでそれを行うにはどうすればよいですか。

3
Magento 1:なぜいくつかのオブザーバーメソッドがgetEvent()を呼び出し、一部は呼び出さないのですか?
最近気づいたこと、それについて知りたいです。 例1:の使用 getEvent() ではMage_Core_Model_LocaleではsetLocale()この方法、イベントが送出されます。 Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this)); このイベントのためのオブザーバーがあるbindLocale()からMage_Adminhtml_Model_Observer public function bindLocale($observer) { if ($locale=$observer->getEvent()->getLocale()) { if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) { $locale->setLocaleCode($choosedLocale); } } return $this; } ご覧のとおり、ロケールを取得するには、最初getEvent()にオブザーバーを呼び出します。 例2:なし getEvent() ではMage_Wishlist_Block_Customer_Wishlist_Item_Optionsでは__construct()この方法、イベントが送出されます。 Mage::dispatchEvent('product_option_renderer_init', array('block' => $this)); したがって、例1と2に同じ構文を使用することに同意します。 しかしながら、この第二例えば観察者があるinitOptionRenderer()からMage_Bundle_Model_Observer public function initOptionRenderer(Varien_Event_Observer $observer) { $block = $observer->getBlock(); $block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration'); return $this; } ご覧のとおり、ブロックを取得するためgetEvent()に、オブザーバーを呼び出しません 質問 …

2
catalog_product_save_afterとcatalog_product_save_commit_afterの違いは?
誰もがこれらのイベントの違いを説明できますか。早くて汚いだけです。ありがとうございました。 私はそのようなオブザーバーメソッドを持っています: public function detectProductChanges($observer) { $product = $observer->getProduct(); $old = $product->getOrigData(); $new = $product->getData(); if ($product->hasDataChanges() && $old['status'] == 1 && $new['status'] == 2) { $this->_sendStatusMail($product); } } に到達していません sendStatusMail() 私はイベントにフックしています: <events> <catalog_product_save_after> <observers> <productchange> <type>singleton</type> <class>A_ProductNotification_Model_Observer</class> <method>detectProductChanges</method> </productchange> </observers> </catalog_product_save_after> </events> 私は使用する必要があります: catalog_product_save_commit_after ゴール: 製品が無効になった後にメールを送信します。 private function _sendStatusMail($product) …


1
イベントオブザーバーでレイアウトにブロックを動的に追加
イベントオブザーバーでlayout.xmlを使用する方法を知りたい。 支払いが完了したときにメッセージをフッターに表示したい。 私はイベントを使用する必要があることを知っています checkout_onepage_controller_success_action イベントオブザーバーでコントローラーまたはlayout.xmlを使用する方法

4
_save_beforeイベントを使用してモデルデータを保存しないようにする方法
独自のデータベーステーブルを持つモデルを作成しました。カスタマイズするにsave_beforeは、このモデルのイベントをトリガーする必要があります。 1つのフィールド値が一致しない場合、データは保存されません。 私の主な目標は、「保存前」イベントを使用したデータの保存を防ぐことです 私のconfig.xmlコード: <?xml version="1.0" ?> <config> <modules> <Amit_Custommodule> <version>1.0.0</version> </Amit_Custommodule> </modules> <global> <models> <custommodule> <class>Amit_Custommodule_Model</class> <resourceModel>custommodule_resource</resourceModel> </custommodule> <custommodule_resource> <class>Amit_Custommodule_Model_Resource</class> <entities> <custommodule> <table>custommodule</table> </custommodule> </entities> </custommodule_resource> </models> <resources> <custommodule_setup> <setup> <module>Amit_Custommodule</module> </setup> <connection> <use>core_setup</use> </connection> </custommodule_setup> <custommoule_read> <connection> <use>core_read</use> </connection> </custommoule_read> <custommodule_write> <connection> <use>core_write</use> </connection> </custommodule_write> </resources> <events> <custommodule_save_before> …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.