2012-02-29 11 views
0

私はMagentoの設計構造にかなり精通しており、現在はそれを開発しています。Magento - Onclick View.phpメソッド?

とにかく、私がしようとしているのは、Sales/Orderメニューにいくつかのボタンを追加してボタンをクリックして、あらかじめ定義されたテンプレート(例えば、返品/発送商品)を送信するボタンを追加することです。

私は電子メールの方法がかなり親切なGoogleのためにソートされていますが、view.php内でこのメソッドを呼び出すことは面倒です。私は方法を実行することができますが、ボタンをクリックすることなく実行され、 'Works !!'が一番上に止まり、Magentoのスタイリングを乱すと非常に明白です。文はボタンがある場合、すなわちあれば、私が使用した私は、これを変更するすべてのどの方法を試してみた

$model = Mage::getModel('MyTux_Email_Model_Email'); 
if($this->_isAllowedAction('Despatch')) 
{ 
    $this->_addButton('Despatched', array(
    $message = Mage::helper('sales')->__('Are you sure this item has been despatched?'), 
    'label'  => Mage::helper('sales')->__('Despatch Confirm'), 
    'onclick' => $model->_sendStatusMail($order), 
    )); 
} 

と混合ブールのさまざまな:

私はこれを行うためのonclickの方法を見てきましたクリックしてからこれを実行してください。そうでない場合は、すべてを実行してください。しかし、メソッドを適切にカプセル化するものはありません。

カスタムモジュールが正しく設定されました。実際の難関は、このメソッドを呼び出すことです。あなたが見ることができるように、私はそれをグローバルヘルパーにしたので、簡単にメソッドに到達できます。しかし、実際に面倒であることが証明されている人は、私が達成することができる方法を知りたい人がいます:

onclick - メソッドを呼び出す!ページが読み込まれたときに呼び出さないでください! :|

ありがとうございます!

答えて

0

StackOverflowで正しい方向にプッシュすることで、私はそれを動作させることができました(現時点では本当にバギーです)。私はこれを他の人のために働かせるために何をしなければならないかを詳しく説明します:

  1. カスタムモジュールにインデックスコントローラを作成します。 Magento Wikiにはこれに関するチュートリアルがあります。
  2. セットアップであなたのconfig.xml以下で(これはこれだけの例のために、このモジュールは、バックエンドであることを意味し、フロントエンドである)以下:

    ... 
    <frontend> 
    <routers> 
        <namespace_module> 
         <use>standard</use> 
         <args> 
          <module>namespace_module</module> 
          <frontName>modulename</frontName> 
         </args> 
        </namespace_module> 
    </routers> 
    </frontend> 
    ... 
    

フロント名前はhttp://yoursite.com/modulenameを参照します。

3:

'onclick' => "confirmSetLocation(\'{$message}','{$this->getUrl('namespace_module')}\')", 

4:あなたの方法のための基本例として、以下を使用し

class MyTux_Email_IndexController extends Mage_Core_Controller_Front_Action 
    {   
     public function indexAction() 
     { 
      $orderId = $this->getRequest()->getParam(\'order_id\'); 
      $order = Mage::getModel(\'sales/order\')->load($orderId); 
      $model = Mage::getModel(\'Your_Custom_Model_Name\'); 
      $email = $model->_sendStatusMail($order); 
     } 
    } 

5:次のように使用し、あなたの注文IDと注文を取得するに関連するすべてのモデルが続きますあなたの電話。ただし、コントローラーレベルでの発注は必ず行ってください。これを理解する悪夢しかし、うまくいけば、この投稿は、同様のジレンマを持っている人を助けるでしょう!

1

onclickオプションは、HTMLボタンタグのonclick属性を設定します。それはMagentoによって実行されません。

このようにしたのは、要求を処理するためのコントローラとルートを作成し、コントローラのURLにブラウザをリダイレクトするか、コントローラーへのAJAX呼び出しを行うためにonclickを設定することです。

+0

おかげで、正しい方向に素敵なプッシュ私はどこから始めるべきか分からなかった! – evensis

+0

おかげで私は解決に来ることができたが、自己回答を試みたが、別の8時間私をさせてくれない! – evensis

+0

喜んで助けてください。あなたが思いついたものを見るのを待つことができません! – wierdo

関連する問題