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

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

2
カートに追加するときにアイテムのカスタムオプションを変更しますか?
アイテムがカートに追加されたときに通知するために、sales_quote_save_beforeイベントを聞いています。起動したら、次のようなアイテムオプションを繰り返し処理します。 $quote = $observer->getEvent()->getQuote(); foreach ($quote->getAllItems() as $item) { $options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct()); foreach($options['options'] as $option) { if($option['label'] == 'myOptionA') { // Here I want to change the selected value for the option } } } ご覧のとおり、特定のオプション(例ではmyOptionA)に達したらすぐに、選択したオプションを変更したいと思います。したがって、myOptionAがドロップダウンであり、4つの可能な値があるとします。値1を選択した場合、その項目に値4を設定します。したがって、カートの読み込みが完了すると、myOptionAの値は4になります。その名前だけでなく、その価格も。どうすればできますか?

2
Magentoオブザーバー関数を使用してセッションにデータを保存する
オブザーバー関数を使用して、Magentoセッションまたはレジストリにデータを保存することは可能ですか? Mage::getSingleton('core/session')->setFoo('bar'); //Or 'customer/session', 'admin/session' または Mage::register('foo', 'bar'); 追加しようとした sesson_write_close(); しかし、何とかセッションデータを読み取ることができました。

2
review_save_afterイベントオブザーバーが正しく実行されていません
Magento 1.8バージョンを使用しています。管理者がステータスが「承認済み」の製品レビューを保存するときに実行する必要があるオブザーバーを作成しました。そして、私はmultiselectを使用してすべての製品の格付け属性を作成し、管理者が製品のレビューを保存するたびに自動的に更新されるはずです。 注:レビューは、レポート/レビュー/製品レビューにあります。 etc / Config.xmlコード: <review_save_after> <observers> <efkadminhtml> <class>efkadminhtml/observer</class> <method>ratingsUpdate</method> </efkadminhtml> </observers> </review_save_after> モード/オブザーバーコード public function ratingsUpdate(Varien_Event_Observer $observer) { $object = $observer->getEvent()->getObject(); $statusId = $object->getStatusId(); if($statusId == 1) { $common = Mage::getSingleton('catalog/common'); $attribute = $common->getAttribute('ratings'); Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID); $productId = $object->getEntityPkValue(); $product = Mage::getModel('catalog/product')->load($productId); $avgRating = Mage::getBlockSingleton('efkreports/product_allReviews')->getAvgReview($product->getId()); Mage::log($avgRating); Mage::log($attribute->getOptionId(round($avgRating))); $product->setRatings($attribute->getOptionId(round($avgRating))); //$product->setRatings(round($avgRating)); …

4
sales_order_save_commit_afterイベントが2回トリガーされましたか?
sales_order_save_commit_after新しい注文が届いたときに通知されるイベントのオブザーバーを登録しました。これは正常に機能しますが、イベントは同じ注文で2回続けてトリガーされます。 私のconfig.xml <sales_order_save_commit_after> <observers> <unique_sales_order_save_commit_after> <type>singleton</type> <class>mymodule/observer</class> <method>export</method> </unique_sales_order_save_commit_after> </observers> </sales_order_save_commit_after> 初めてのイベントなのか、それとも他のどのイベントが良いのかを確認するにはどうすればよいですか? 更新 私もsales_order_invoice_pay(SOで見つかった)イベントを試しましたが、それは私にはトリガーされません。

3
注文状態の変化の観察
デフォルトでは注文状態イベントはないようですが、通常は注文状態の変化をどのように観察しますか?2つの可能性があります。a)販売/注文モデルを上書きして、状態変更のカスタムイベントを作成します。b)注文保存イベントを観察し、そこで状態を確認します。 これらのうちの1つは進むべき道ですか、それともより良いオプションがありますか? 編集:これまでの回答に感謝します。状況はもう少し複雑です。現在の状態に応じて注文に情報を追加したい。ここに問題があります:save_beforeイベントでは、古い状態のままで新しい状態にはなりません。sales/ orderモデルでは_beforeSave()メソッドが次のようになっているためです。 parent::_beforeSave(); $this->_checkState(); //... したがって、イベントは処理されますがparent::_beforeSave();、注文の状態は後で実際に変更されます$this->_checkState();(これは自動変更です。たとえば、請求書を作成すると、まだ出荷がない場合、状態は処理に移行します)。 sthを保存したいので、save_afterイベントも使用できません。順序で、おそらくsave_afterイベントでsaveを呼び出すためにすべてを壊します。 何か案は?今の私の唯一のアイデアは$this->_checkState();、私のsave_beforeオブザーバーで動作を複製して、最終的に状態がどうなるかを見つけることです...

1
magento 2イベントカタログinventory_stock_item_save_after
製品の在庫レベルが変化するたびに検出する必要があります。magento 1.xにはcataloginventory_stock_item_save_afterがあるため、magento 2.1でも同じように実装したい <event name="cataloginventory_stock_item_save_after"> <observer name="cataloginventorysave" instance="Vendor\Module\Observer\Cataloginventorysave" /> </event> 次に、アクセスしたいオブザーバー「Cataloginventorysave.php」を作成しました $stockItem = $observer->getEvent()->getItem(); しかし、イベント名cataloginventory_stock_item_save_afterがmagento 2イベントリストに見つかりません。どうすればそれを達成できますか?

4
Magento2:オブザーバーからカスタムURLにリダイレクト
私の要件は、顧客がインドの国のウェブサイトにアクセスした場合、インドのウェブサイトwww.example.com/in/にリダイレクトされることです。それ以外の場合はすべて、デフォルトのWebサイトのみにする必要があります。 geoipPHPライブラリを使用しています。私はフロントエンドイベントcontroller_action_predispatchを使用しましたが、これが私のオブザーバーコードです。 namespace Amit\Geoip\Observer; require_once 'lib/geoip.inc'; use Magento\Framework\Event\ObserverInterface; use Magento\Framework\Controller\ResultFactory; use Magento\Store\Model\StoreManager; class ControllerActionPredispatch implements ObserverInterface { protected $resultRedirectFactory; public function __construct( ResultFactory $resultFactory, StoreManager $storeManager ) { $this->resultFactory = $resultFactory; $this->storeManager = $storeManager; } public function execute(\Magento\Framework\Event\Observer $observer) { $baseUrl = $this->storeManager->getStore()->getBaseUrl(); $gi = geoip_open(getcwd()."/app/code/Amit/Geoip/Observer/lib/GeoIP.dat",GEOIP_STANDARD); $ip = $_SERVER['REMOTE_ADDR']; $country_code …


3
オブザーバー内でLast OrderIdを取得する方法
請求書と出荷を自動的に作成できるように注文の最後の注文IDを取得しようとしていますが、アクションを実行するための正しいorderIdをロードできないようです... これがorderId Observer.phpをロードしようとする方法です $order = Mage::getModel('sales/order')->load($orderid); $orderIncrementId = $order->getIncrementId(); orderIdが存在しない場合は例外をスローします $order = Mage::getModel('sales/order') ->loadByIncrementId($orderIncrementId); if (!$order->getId()) { Mage::throwException("Order does not exist, for the Shipment process to complete"); } 問題は、静的なorderIdを渡しても例外がスローされないことです。 $orderIncrementId = '1100000023-4'; しかし、モデルを介してロードしようとすると、できません 誰かが注文のorderIdを取得する方法を教えてもらえますか?

1
支払われた注文のための正しいマジェントオブザーバー
注文の支払いが完了し、ステータスが「処理中」に設定された後にのみ、第三者に注文を送信しようとしています。これをすべての支払いタイプで機能するように設定するために使用する最良のオブザーバーは何ですか? いくつかのソースを読んだ後、それは次のようになります: sales_order_invoice_pay すべての支払い方法で機能するはずですが、Magento 1.9では削除されたようです:http : //rabee.me/codes/magento/cheatsheet/1.9/ 他のオプションは: 'sales_order_payment_pay' しかし、支払い方法を「小切手/為替」に設定してテストすると、[注文]> [請求書]> [請求書の送信]を使用してバックエンドで請求書を生成した後、発行されません。 このメソッドは他の支払い方法でのみ呼び出されますか?(paypal / authotize.net) 更新: 読んだ後:この他の質問は 、支払い(オンラインまたはオフライン)が行われた後に注文を確実にエクスポートする唯一の方法のようですが、請求書が作成されたときにそれをキャプチャすることです。 : sales_order_invoice_register 請求書は、オンライン方法paypal / authotize.netでの支払い後に自動的に作成および送信されますか?サンドボックス/テストモードでそれらを使用する場合、これはまだ当てはまりますか? 手伝ってくれてどうもありがとう

2
Enterprise GiftCardのギフトカード生成が間違ったタイミングで発生しているようです
Enterprise_GiftCardモジュールgenerateGiftCardAccounts()はから起動しsales_order_save_commit_afterます。 これにより、注文が実際に行われなかった場合でも、ギフトカードが生成されているようです(クレジットカードが無効であるなど)。 簡単なテストから、オブザーバーをに変更sales_order_place_afterしましたが、魅力のように見えました。 これはEE 1.12.0.2で見られますが、最新のEE(1.13.1.0)を確認しましたが、同じオブザーバーを使用しています。 更新:多分私の実際の質問は明確ではなかったと思います。だから問題は-これがEE GiftCardモジュールの既知の問題かどうか知っていますか?これに対する簡単な修正はありますか? 構成Generate Gift Card Account when Order Item is値をOrderedからInvoicedに変更すると問題が解決する可能性があります。しかし、その場合は、Ordered値にコアバグがあるようです。知っておくと便利です。

3
Massactionのcatalog_product_save_afterイベント
イベントcatalog_product_save_afterを使用して、製品が変更/保存された後に何らかのアクションをトリガーしています。これはsave()を呼び出さずに行われるため、製品を変更するためにmassactionが使用される場合、このイベントは機能しません。 製品の変更を監視するために使用できる別のイベントはありますか? すべての製品の変更を取得するための推奨される方法はありますか?

3
プログラムでイベントオブザーバーの登録を解除する
プログラムでイベントオブザーバーの登録を解除できるかどうか誰かが知っていますか?newsletter_subscribe_save_after顧客モデルのカスタム属性を更新するオブザーバーがありますが、顧客レコードが保存customer_save_afterされるMage_All.xmlと、定義されたイベントからトリガーされ、ニュースレターのサブスクリプションステータスが再保存され、無限ループが発生し、PHP再帰エラーが発生します100回入れ子に。 理想的にはcustomer_save_after、オブザーバーが起動したときにのみイベントの登録を解除したいと思います。

4
管理者で[設定を保存]をクリックした後にアクションを呼び出す
[システム]-> [構成]-> [カタログ]で[構成の保存]をクリックした後、カスタムモジュールでコントローラーのアクションを呼び出すにはどうすればよいですか?(画像) モジュールの設定はそのセクション内にあり、構成が保存された直後にアクションを起動する必要があります。管理パネルのそのセクションでのみアクションを呼び出す必要があります-管理の別のセクションで[構成を保存]をクリックした場合、アクションを呼び出す必要はありません。 編集: アクションは、モジュールの保存された設定が正しいかどうかを確認し、構成が保存されるたびに他の計算を行う必要があります。 編集2: Fabian Blechschmidtが投稿した解決策を試しました。「構成の保存」をクリックした後、オブザーバーは機能しています(ログファイルにテキストが表示されます)。 config.xml: <config> ... <global> <events> <admin_system_config_changed_section_mysection> <observers> <mymodule> <type>singleton</type> <class>mymodule/observer</class> <method>handle_adminSystemConfigChangedSection</method> </mymodule> </observers> </admin_system_config_changed_section_mysection> </events> </global> ... </config> Model / Observer.php: class My_Module_Model_Observer { public function handle_adminSystemConfigChangedSection() { Mage::log('Test: oberver is working!'); //I tried this but it doesn't actually trigger the …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.