2014-11-03 7 views
0

Я пытаюсь добавить кнопку на вкладке Customers->Account Information. Я хочу, чтобы кнопка выполняла действие при нажатии. Я хотел бы сделать это в пользовательском модуле. Я не слишком люблю идею перезаписи файлов ядра или любых классов. Из того, что у меня есть Google, вы можете сделать это, используя Observer, например, here, если это правда, то я хотел бы сделать это таким образом.Как добавить кнопку на вкладку «Информация о пользователе» в Magento?

Я знаю, как создать базовый модуль, мне нужна помощь, так как вы помещаете кнопку на определенной вкладке без перезаписи файлов/классов?

Обновление 11/3/2013 11 утра:

Вот скриншот here

Я хотел бы добавить кнопку на этой вкладке.

Обновление 2:48 вечера 11/3/2014

Вот мой код до сих пор, может быть, я делаю ошибку где-то.

Моя структура файла

-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(); 

Вот как я понял, в чем проблема.

Очень полезно.

 Смежные вопросы

  • Нет связанных вопросов^_^