2014-11-03 62 views
0

我試圖在Customers->Account Information選項卡中添加一個按鈕。我希望按鈕在點擊時執行操作。我想在自定義模塊中執行此操作。我不太喜歡重寫核心文件或任何類的想法。從我google搜索到的人都說你可以用Observer做這個,一個例子是here,如果那是真的,那麼我想這樣做。如何將按鈕添加到Magento中的客戶信息選項卡?

我知道如何製作一個基本模塊,我需要幫助的是如何在不重寫文件/類的情況下在特定選項卡中放置按鈕?

更新2013年11月3日上午11點:

下面是截圖here

我想補充此選項卡上的按鈕。

更新下午2:48 2014年11月3日

這裏是我到目前爲止的代碼,也許我犯了一個錯誤的地方。

我的文件結構

-app 
    -local 
     -Rdtmodules 
      -ChangeGroupNotification 
       -etc 
        -config.xml 
       -Model 
        -Observer.php 
    -etc 
     -modules 
      -Rdtmodules_ChangeGroupNotification.xml 

config.xml中

<?xml version="1.0" encoding="UTF-8"?> 
    <config> 
     <modules> 
      <Rdtmodules_ChangeGroupNotification> 
       <version>1.0.0</version> 
      </Rdtmodules_ChangeGroupNotification> 
     </modules> 
     <global> 
      <models> 
       <rdtmodules_changegroupnotification> 
        <class>Rdtmodules_ChangeGroupNotification_Model</class> 
       </rdtmodules_changegroupnotification> 
      </models> 
      <events> 
       <adminhtml_block_html_before> 
        <observers> 
         <rdtmodules_changegroupnotification> 
          <class>rdtmodules_changegroupnotification/observer</class> 
          <method>sendCustomerGroupChangeNotification</method> 
          <type>singleton</type> 
         </rdtmodules_changegroupnotification> 
        </observers> 
       </adminhtml_block_html_before> 
      </events> 
     </global> 
    </config> 

Observer.php

<?php 

class Rdtmodules_ChangeGroupNotification_Model_Observer { 
    public function sendCustomerGroupChangeNotification(Varien_Event_Observer $observer) { 
     $block = $observer->getEvent()->getData('block'); 
     if($block->getId() == 'customer_edit' && $block->getRequest()->getControllerName() == 'customer_edit') { 
      $block->addButton('test_print', array(
       'label'  => 'Test', 
       'onclick' =>'setLocation(\'' . $block->getUrl('html/sales_order/print') . '\')', 
       'class'  => 'go' 
     )); 
     } 
    } 
} 

回答

0

所以我想通日由於所有其他工作都是有效的,所以我的if語句存在問題。所以首先這裏是我的觀察員的代碼。

Observer.php

<?php 
class Rdtmodules_GroupNotification_Model_Observer 
{ 
    public function sendNotification(Varien_Event_Observer $observer){ 
     $block = $observer->getEvent()->getData('block'); 
     if($block->getNameInLayout() == 'customer_edit' && $block->getRequest()->getControllerName() == 'customer') { 
      $block->addButton('test_print', array(
       'label'  => 'Test', 
       'onclick' =>'setLocation(\'' . $block->getUrl('html/sales_order/print') . '\')', 
       'class'  => 'go' 
      )); 
     } 
    }  
} 

$block->getId()沒有返回任何東西這就是爲什麼它不工作。此外,控制器名稱不是customer_edit它只是customer o.o.

我如何解釋這是我在佈局中打印控制器名稱操作名稱和塊名稱。

echo "Controller Name: " . $block->getRequest()->getControllerName(); 
echo "Action Name: " . $block->getRequest()->getActionName(); 
echo "Block Name: " . $block->getNameInLayout(); 

這就是我如何找出問題所在。

非常有用。

相關問題