system.xmlに日付フィールドを追加するにはどうすればよいですか?


回答:


16

system.xmlに以下を追加した場合

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

次に、次のファイルを作成します。

app / code / [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>を追加する必要があります
Mukesh

日付は管理者が設定したロケールで保存されることに注意してください。これは問題を引き起こす可能性があります。たとえば、オランダの日付形式はdd-MM-YYYYです。これは、この形式でデータベースに文字列として保存されます。この日付に依存する他のプロセスは、正しく機能しない可能性があります。例:PDFを生成する場合、管理者が別のものに設定されていても、Magentoによって返されるロケールはen_USです。これにより、予期しない結果が生じる可能性があります。
Giel Berkers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.