2016-09-20 11 views
0

1つのチェックボックスをクリックすると、PHPイベント(magentoイベント)'payment_method_is_active'を呼び出そうとしています。どうやってやるの?アプリの/ etc /モジュール/ MyCompany_Ajax.xmlajaxでPHPイベントをディスパッチするには?

<config> 
    <modules> 
    <MyCompany_Ajax> 
     <active>true</active> 
     <codePool>local</codePool> 
    </MyCompany_Ajax> 
    </modules> 
</config> 

:あなたはカスタムコントローラのアクションへのAJAX呼び出しを行うと以下のようにそこに派遣イベントを行う必要があり

enter image description here

+0

をhttp://stackoverflow.com/questions/6017558/checkbox-checked -or-unchecked-with-jquery-and-mysql –

+0

Ok。しかし、私はどのようなPHPイベントをディスパッチするためにアヤックスと言うのですか? –

+0

あなたは 'Mage :: dispatchEvent( 'payment_method_is_active' ...')というコントローラー(AJAX経由で呼び出される)に何かを置くことができませんか?私はマゼンタを知らないが、ちょっとグーグル –

答えて

0

app/etc/code/local/MyCompany/Ajax/etc/config.xml内

<config> 
    <modules> 
     <MyCompany_Ajax> 
      <version>1.0.0</version> 
     </MyCompany_Ajax> 
    </modules> 
    <global> 
     <frontend> 
      <routers> 
       <mycompanyajax> 
        <use>standard</use> 
        <args> 
         <module>MyCompany_Ajax</module> 
         <frontName>mycompanyajax</frontName> 
        </args> 
       </mycompanyajax> 
      </routers> 
     </frontend> 
    </global> 
</config> 

あなたがコントローラにAjaxのリクエストを送信し、そこからイベントを送出することができます

#app/code/local/MyCompany/Ajax/controllers/AjaxController.php 
<?php 
class MyCompany_Ajax_AjaxController extends Mage_Core_Controller_Front_Action 
{ 
    public function paymentAction() 
    { 
     $paymentMethodStatus = $this->getRequest()->getParam('is_active', false); 
     //The $args variable may differ based on what values you are expecting in your observer. 
     $args = array ('is_active', $paymentMethodStatus); 
     Mage::dispatchEvent('payment_method_is_active', $args); 
    } 
} 

あなたにテンプレートファイル:

$("#paymentCheckBox").live("click", function(){ 
    var isChecked = $(this).is(":checked"); 
    $.ajax({ 
     type: "POST", 
     url: mycompanyajax/ajax/payment, 
     data: { 'is_active' : isChecked}, 
     success: function(data) { 
      //Handle if you return something 
     }, 
     error: function() { 
      alert('Something went wrong'); 
     }, 
     complete: function() { 
      alert('Its done'); 
     } 
    }); 
}); 
関連する問題