Необходимо добавить пользовательскую кнопку и соответствующее действие в разделе Система->Конфигурация->Пользовательский раздел в качестве поля


Я добавляю Пользовательский раздел на вкладке Система->Конфигурация.

Мне нужно добавить кнопку в качестве поля и связанное с ней действие, которое мне нужно выполнить. Но я не могу найти в Google для кнопки все примеры предоставляют другой вариант поля, но трудно получить пример кнопки.

Другой раздел Работает нормально, но я не могу добавить кнопку и связанное с ней действие (путь к файлу), которые вызывают щелчок.

<fields> 
  <goldprice translate="label"> 
    <label>GoldPrice</label>                   
    <frontend_type>text</frontend_type>                
    <sort_order>0</sort_order>  
    <show_in_default>1</show_in_default> 
    <show_in_website>1</show_in_website> 
    <show_in_store>1</show_in_store> 
    <comment>Gold Price per 1gm</comment> 
  </goldprice> 
  <run translate="label">
    <frontend_type>button</frontend_type>
    <frontend_model>/adminhtml_system_config_customfield</frontend_model>
    <sort_order>30</sort_order>
    <show_in_default>1</show_in_default>
    <show_in_website>1</show_in_website>
    <show_in_store>1</show_in_store>
  </run> 
</fields>

Мой Конфигурационный Файл, Как Показано Ниже

<?xml version="1.0"?>
<config>
  <modules>
    <LetsNurture_CustomGrid>
      <version>0.1.0</version>
    </LetsNurture_CustomGrid>
  </modules>
  <global>
    <blocks>
      <customgrid>
        <class>LetsNurture_CustomGrid_Block</class>
      </customgrid>
    </blocks>
    <models>
      <class>LetsNurture_CustomGrid_Model</class>
    </models>
    <helpers>
      <customgrid>
        <class>LetsNurture_CustomGrid_Helper</class>
      </customgrid>
    </helpers>
    <events>
      <admin_system_config_changed_section_gold> <!-- identifier of the event we want to catch -->
        <observers>
          <customgrid>
            <type>model</type>
            <class>LetsNurture_CustomGrid_Model_Observer</class>
            <method>UpdatePrice</method>
          </customgrid>
        </observers>
      </admin_system_config_changed_section_gold>
    </events>
  </global>
</config>

И Customfiled.php как будто ниже

class LetsNurture_CustomGrid_Block_Adminhtml_System_Config_Customfield extends Mage_Adminhtml_Block_System_Config_Form_Field
{
    protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
    {
        $url = $this->getUrl('catalog/product'); //

        $html = $this->getLayout()->createBlock('adminhtml/widget_button')
                    ->setType('button')
                    ->setClass('scalable')
                    ->setLabel('Run Now !')
                    ->setOnClick("setLocation('$url')")
                    ->toHtml();


        return $html;
    }
}

Но это дает мне такое предупреждение "не удалось открыть поток: Нет такого файла или каталога"

Спасибо, Йогеш

Author: Vinh VO, 2015-10-21

1 answers

<frontend_model> путь ведет к блокам (вместо моделей).

Кстати, хотя он и называется классом model, но мы должны создать его как класс блоков Magento, поскольку именно так реализованы другие встроенные классы моделей переднего плана.

Кроме того, он используется для вывода шаблона, поэтому для этого целесообразно создать класс блоков.

Пример

<frontend_model>NAMESPACE_MODULENAME/adminhtml_system_config_customfield</frontend_model>

Итак

Создайте Customfield.php в разделе .../NAMESPACE/MODULENAME/Block/Adminhtml/System/Config/ со следующим содержимым:

class NAMESPACE_MODULENAME_Block_Adminhtml_System_Config_Customfield extends Mage_Adminhtml_Block_System_Config_Form_Field
{


    protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
    {       
        $html = parent::_getElementHtml($element);
       //Write your custom html here
        return $html;
    }
}

Надеюсь, что это поможет ты

 2
Author: Keyur Shah, 2015-10-21 09:40:01