Как добавить поле даты в system.xml?

Ответы:

16

Если вы добавите следующее в ваш system.xml

<frontend_type>text</frontend_type>
<frontend_model>namespace_module/adminhtml_system_config_date</frontend_model>

Затем создайте следующий файл:

Приложение / код / ​​[codePool] /Namespace/Module/Block/Adminhtml/System/Config/Date.php

class Namespace_Module_Block_Adminhtml_System_Config_Date extends Mage_Adminhtml_Block_System_Config_Form_Field
{
    protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
    {
        $date = new Varien_Data_Form_Element_Date();
        $format = Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT);

        $data = array(
            'name'      => $element->getName(),
            'html_id'   => $element->getId(),
            'image'     => $this->getSkinUrl('images/grid-cal.gif'),
        );
        $date->setData($data);
        $date->setValue($element->getValue(), $format);
        $date->setFormat(Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT));
        $date->setForm($element->getForm());

        return $date->getElementHtml();
    }
}

Это предполагает, что у вас уже есть настройка блоков для этого модуля в config.xml

Дэвид Мэннерс
источник
@Sukeshini, Для блоков в config.xml вам нужно добавить <blocks> <module> <class> Namespace_Module_Block </ class> </ module> </ blocks>
Мукеш,
Обратите внимание, что дата будет сохранена в локали, установленной вашим администратором. Это может вызвать проблемы. Например: голландский формат даты: дд-мм-гггг. Это будет сохранено в виде строки в вашей базе данных в этом формате. Другие процессы, которые зависят от этой даты, могут работать неправильно. Например: при генерации PDF, языковой стандарт, возвращаемый Magento, это en_US, даже если администратор настроен на что-то другое. Это может привести к непредвиденным результатам.
Гиль Беркерс