2011-02-08 2 views
2

[OK]をクリックすると、質問の語り方がわからないので、これを明確に説明できます。イベントを使って機能を追加/修正することで、本当にうまくやっています。私は、船積み、請求書、配送先住所の見積もりについて国リストのドロップダウンリストに記載されている国を変更する作業をしています。この機能は、クライアントのいくつかのビジネスルールから追加されます。ヘルパーメソッドが実行された後に機能を追加するために使用するイベント

私はこのメソッドを簡単に書き直すことができたと確信していますが、イベントを使ってすべてのイベントを使用する方法を考えています。イベントを使用してドロップダウンを変更するかどうか尋ねていますメソッドgetRegionJson()の中にMage_Directory_Helper_Dataの中に表示されていますが、どうやってそれに行きますか?

私は、コレクションがロードされているが、その可能性がないと思っていましたが、何か不足している可能性があります。

+0

これは、データベースの 'directory_country_region'テーブルを変更することでできないものですか? – clockworkgeek

+0

hmmmカート内の特定のアイテムに基づいて特定の国を削除したいだけでした。 –

答えて

1

これは、イベントを使用してヘルパークラスを攻撃する方法に関する質問への回答とは正確には一致しませんが、私の問題には答えます。 getRegionJsonのJSON出力を変更する必要があるという点で私は間違っていました。私が間違っている場合は私を修正しますが、それはあなたが別の国を選択し、州/制度のドロップダウンが変更された場合にのみ使用されます。私は選択メニューからオプションを削除する必要があったので、JSON出力は国のオプションを削除してもユーザーがそのjavascriptを必要とする機会を決して取ることができなかったからです。

は、だから私は、だから、私は core_block_abstract_to_html_beforeイベントオブザーバーだと見ることができ、次の

 <core_block_abstract_to_html_before> 
      <observers> 
       <modify_country_dropdown> 
        <type>singleton</type> 
        <class>module/observer</class> 
        <method>modifyCountryDropDown</method> 
       </modify_country_dropdown> 
      </observers> 
     </core_block_abstract_to_html_before> 

のようなイベントオブザーバを設定することにより、観測者にこのドロップダウンを変更する方法を見つけた後、私のコードのIでそのブロックのブロックMage_Core_Block_Html_Selectでは、次の

のオプションは、私は私がやりたいことができます別の選択メニューオプションのすべてです
if($observer->getBlock()->getName() == 'country_id' || $observer->getBlock()->getName() == 'billing[country_id]' || $observer->getBlock()->getName() == 'shipping[country_id]'){ 

     $options = $observer->getBlock()->getOptions(); 
     code here 
     } 

のような名前を検索することができました。

私はこれを行いましたが、オブザーバーでヘルパークラスから出力されたjson文字列を変更したい場合はどうすればよいか知っておいて嬉しいです。

+0

いいです。縛られるイベントがないように見えるかもしれないと私の信念を確認しています。 :) –

+0

ええ、私はイベントで道を見つけるために迷っていたと思ったが、それはそこにあった。 –

関連する問題