Создание собственного вспомогательного класса в модуле

24

Я создал новый модуль с именем, test_helperи я хочу создать вспомогательный класс в этом модуле, чтобы я мог добавлять пользовательские функции, которые будут вызываться по всему моему сайту.

Однако я не могу найти какие-либо примеры того, как это сделать. Я предполагаю, что мне нужно создать какой-то дополнительный XML-файл в конфигурации и добавить еще один файл, который расширяет базовый помощник, но мне не повезло найти пример, на котором можно было бы опираться.

Крис Моррис
источник

Ответы:

34

Соглашение об именах модулей довольно запутанно - вы вызываете сам помощник модуля? В целях объяснения, я выбираю для вызова вашего модуляmyname_mymodule

В вашем модуле ./app/code/community/MyName/MyModule/etc/config.xml, внутри <global>тегов

<helpers>
  <mymodule>
      <class>MyName_MyModule_Helper</class>
  </mymodule>
</helpers>

Затем создайте файл ./app/code/community/MyName/MyModule/Helper/Data.php

<?php

class MyName_MyModule_Helper_Data extends Mage_Core_Helper_Abstract{

}

Затем, чтобы вызвать этот модуль, вы должны использовать

$helper = Mage::helper('mymodule');
Бен Лессани - Сонасси
источник
9

Добавьте вспомогательный каталог в каталог расширений и там файл Data.php

class Test_Helper_Helper_Data extends Mage_Core_Helper_Abstract {

  public function yourFunction() {
     ...
     your code here
     ...
  } 

}

Теперь вы можете позвонить через

Mage::helper('test/helper')->yourFunction();

Также добавьте следующее в ваш config.xml

...
<global>
    ...
    <helpers>
        <[extension name]>
            <class>[Namespace]_[extension name]_Helper</class>
        </[extension name]>
    </helpers>
    ...
</global>
...
Сандер Мангель
источник
Большое спасибо вам обоим. Это подкрепляет крошечную информацию, которую я смог найти, и я смог заставить ее работать в конце. На самом деле я не называю это test_helper, который был предназначен только для того, чтобы я пролистал материал на моем небольшом тестовом блоке, но да, глупая идея назвать его helper = p
Крис Моррис
Вам, наверное, лучше переименовать его, но главное, что это работает! удачи в проекте
Сандер Мангель