問題タブ [observers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Observer と Observable はいつ使用する必要がありますか?
インタビュアーは私にこう尋ねました:
それらは何でObserver
、Observable
いつ使用する必要がありますか?
私はこれらの用語を知らなかったので、家に帰って と についてグーグルで調べ始めたときObserver
、Observable
さまざまなリソースからいくつかのポイントを見つけました。
1)
Observable
はクラスでObserver
あり、インターフェースです。2)
Observable
クラスは のリストを維持しますObserver
。3)
Observable
オブジェクトが更新されると、そのオブジェクトupdate()
のそれぞれのメソッドを呼び出してObserver
、変更されたことを通知します。
私はこの例を見つけました:
Observer
しかし、なぜとObservable
?が必要なのかわかりません。setChanged()
およびnotifyObservers(message)
メソッドは何のためのものですか?
magento - Magentoのオブザーバーの総計を更新するにはどうすればよいですか?
イベントのオブザーバーがいます
controller_action_predispatch_checkout_onepage_savePayment
いくつかの条件に基づいて総計を変更したいと思います。私は試してみました:
$ value = 100;
$ quote = Mage :: getSingleton('checkout / type_onepage')-> getQuote();
$ quote-> setGrandTotal($ value);
$ quote-> setTotalsCollectedFlag(false)-> collectTotals();
$ quote-> save();
また
$ value = 100;
$ quote = Mage :: getSingleton('checkout / type_onepage')-> getQuote();
$ quote-> setGrandTotal($ value);
$ quote-> collectTotals();
$ quote-> save();
しかし、それは機能しません。何か案は?
ありがとうございます!
php - Magento catalog_product_before_save がライブ サーバーで起動しない
私は展開の最中であり、Magento のオブザーバーとイベントを使用して特定の属性に固定データを与えることで、製品の保存をオーバーライドしようとしていますが、問題は、私が開発しているローカルでこれをすべて作業していることです。しかし、サーバーにアップロードしてオブザーバーを実行しようとすると、まったく起動しないようです。このチュートリアルに基づいて以下のコードを作成しました: http://www.magentocommerce.com/wiki/5_-_modules_and_development/0_-_module_development_in_magento/customizing_magento_using_event-observer_method
これを実現するために使用する 2 つのファイルが /app/code/local にあります。
/アプリ/コード/ローカル/リーフカッター/カタログ/etc/config.xml
/app/code/local/Leafcutter/Catalog/Model/ProductAutoInsert/Observer.php
}
テストするテキストも出力しようとしましたが、何もログに記録されないため、イベントが発生していないと考えています。正確なプラグインがインストールされているため、ライブ バージョンでプラグイン間で競合が発生するかどうかはわかりません。
上記のコードが実際に問題ではない場合、この問題を引き起こす可能性のある他の可能性は何ですか?
みんなありがとう。
events - Magento Event Observer: CatalogSearch を変更してカスタム属性を含める
以下のリンクの記事 (イベント/オブザーバーを使用して Magento をカスタマイズする) に従っていました。
しかし、ステップ 7 についてはよくわかりません。この記事のステップ 7 を実行するにはどうすればよいですか?
ステップ 7
フロント エンドの製品詳細ページに移動し、新しい割引が有効になっていることを確認します。ここで注目すべきは、割引価格が必要な他のすべての画面です。ここでの例は検索結果画面で、この新しい属性を select query search attributes in method に追加する必要があります。
前もって感謝します。
xml - オブザーバーからのレイアウトの更新
私はスライダーブロックMagentoで作業しており、オブザーバーからレイアウトを生成して更新しようとしています。
イベント:controller_action_layout_load_before
これは私のオブザーバーメソッドです:
実際、これは「$myXML」変数から取得したものです。
そして、それは動作しません!! しかし、このxmlをレイアウトにコピー/貼り付けしようとすると、機能します。Xmlコードは正しいです!助けが必要
ですありがとう!
events - 監視するコントローラーレスコアMagentoモジュールをトリガーするにはどうすればよいですか?の外部スクリプトからconfig.xmlに
背景参照については、参照:Magento:オブザーバーを外部スクリプトで動作させるにはどうすればよいですか?
フロントエンドコントローラーのアクションを外部スクリプトから「複製」するための推奨される方法を尋ねたいと思いました。MagentoEE1.12の外部SSOログインを作成しています。
私のコードは、phpファイルに次のように存在します。test.phpを作成し、ユーザー(185)をユーザーIDに置き換えることで、テストできます。ページに移動してから、もう一度移動します。ログインおよびログアウトしていることに気付くでしょうが、adminではオンラインとして表示されません。読む...
このコードはユーザーにログインしますが、Mage_Log、Mage_Persistent、またはconfig.xmlのフロントエンド領域にアタッチされたcontroller_action_predispatchおよびcontroller_action_postdispatchイベントに依存するコントローラーのない他のモジュールは起動しません。
Mage_Logは、customer_loginを監視してbindCustomerLogin()関数を起動する(上記のAlan Stormの提案を使用しているため)が、コントローラーディスパッチが起動せず、モジュールが正しく機能しないという状況の完璧な例です。
これらの他のモジュールは、外部スクリプト(またはcontroller_front_init_routersイベントを監視しているグローバルオブザーバー)からどのようにトリガーされる可能性がありますか?
編集: 解決策これが上記のベンチマークによる提案の最終結果です...私はMage_Customerコントローラーをエミュレートしています。以下のスクリプトは、COMPLETEmagentoログインを実行する方法を示しています。広範囲にテストされていませんが、ユーザーがバックエンドにログインしていることを示しています。これは私がこれまでに見た中で最も完全なソリューションです。
php - Magento: ディスパッチされたイベントをキャプチャできません
支払い方法とイベント タイプに基づいて自動注文ステータス チェンジャーを開発するために、次のモジュールを作成しました。
/GT/OrderFlo/etc/config.xml
/GT/OrderFlow/Model/Observer.php
コードはhttp://www.atwix.com/magento/auto-invoice-and-custom-order-status-upon-checkout/から複製されました。
sales_order_place_after
しかし、イベント後にオブザーバーを起動するにはどうすればよいですか?
php - オブザーバーでバスケットの商品 ID を取得する
特定の製品が追加されるたびにカートをクリアするために、オブザーバーを設定しsales_quote_add_item
ました (単独で注文することになっています)。追加しようとしている製品の製品 ID を取得する方法がわかりません。いくつかの試行錯誤で、私はこれを思いつきました:
これはかなり醜い解決策のようです。これを呼び出すためのショートカットまたは適切な機能があると確信していますが、アイデアはありますか?
php - sales_quote_add_item オブザーバーからの製品の追加を中止します
私のsales_quote_add_item
-observer では、標準的な方法でカスタム エラー メッセージを表示して製品の追加を中止するにはどうすればよいですか? 明らかにそれをグーグルで調べて、あまり賢くならずにコアソースをチェックしようとしました...
ruby-on-rails-3 - オブザーバーでの翻訳の使用
通知メールの送信をオブザーバーにアウトソーシングすることで、モデルとコントローラーのクリーンアップを開始しました。
これをコントローラーからオブザーバーに移動することで気付いた問題が1つあります。「translate」または省略形「t」を呼び出すと、「メソッドが定義されていません」という答えが返されます。
わかりました。国際化のためのレールの実装が本当に好きです。しかし、モデルやオブザーバーでどのように使用できますか?