Средство выбора даты Magento Adminhtml на пользовательской странице (без формы)


Я хотел бы добавить средство выбора даты в пользовательское поле ввода в .phtml.файл, который загружается по ссылке на блок, т.Е.:

Контроллер

public function indexAction()
{
    $this->loadLayout();
    $this->getLayout()->getBlock('head')->setTitle('Title'); 
    $this->_setActiveMenu('namespace/module');
    $this->_addContent($this->getLayout()->createBlock('namespace/adminhtml_module'));
    $this->renderLayout();

}

Блок

public function __construct()
{
    parent::__construct();
    $this->setTemplate('namespace/page.phtml');
}

Который перенаправляет на: app/design/adminhtml/default/default/template/namespace/page.phtml.

Теперь, когда переадресация настроена, я могу создать любой макет, который я хотел бы на этой странице. т.е.:

<div>Enter the date here:</div>
<input name='date' id='date'></input>

Я хотел бы знать, как я могу ссылаться на Средство выбора даты Magento, которое оно использует для элементов формы, т.е.:

$fieldset->addField('date', 'date', array(
'name'               => 'date'
'label'              => Mage::helper('your_module_name')->__('Date'),
'after_element_html' => '<small>Comments</small>',
'tabindex'           => 1,
'image'              => $this->getSkinUrl('images/grid-cal.gif'),
'format'             => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT) ,
'value'              => date( Mage::app()->getLocale()->getDateStrFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT),
                              strtotime('next weekday') )
));

Любой вклад был бы весьма признателен.

Author: Community, 2014-03-29

2 answers

Таким образом, поля даты добавляются с помощью Varien_Data_Form_Element_Date. Что вы могли бы сделать, так это заглянуть в этот файл и проверить функцию getElementHtml вот где происходит "волшебство".

Вы должны быть в состоянии вызвать что-то вроде new Varien_Data_Form_Element_Date($config), где $config - массив, используемый при вызове addElement.

Обратите внимание, что это непроверено, но "должно" работать

$element = new Varien_Data_Form_Element_Date(
    array(
        'name' => 'date',
        'label' => Mage::helper('your_module_name')->__('Date'),
        'after_element_html' => '<small>Comments</small>',
        'tabindex' => 1,
        'image' => $this->getSkinUrl('images/grid-cal.gif'),
        'format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT),
        'value' => date(
            Mage::app()->getLocale()->getDateStrFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT),
            strtotime('next weekday')
        )
    )
);
$element->setId('date');
$element->getElementHtml(); // this should now give you all the html that you could need
 4
Author: David Manners, 2014-05-24 09:37:20

$элемент должен принадлежать форме Varien_Data_Form, поэтому правильный код:

       $form = new Varien_Data_Form(array(
            'id'        => 'edit_form',
            'action'    => $this->getUrl('*/*/save'),
            'method'    => 'post'
        ));
        $element = new Varien_Data_Form_Element_Date(
            array(
                'name' => 'date',
                'label' => Mage::helper('bundle')->__('Date'),
                'after_element_html' => '<small>Comments</small>',
                'tabindex' => 1,
                'image' => $this->getSkinUrl('images/grid-cal.gif'),
                'format' => Mage::app()->getLocale()->getDateFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT),
                'value' => date(
                    Mage::app()->getLocale()->getDateStrFormat(Mage_Core_Model_Locale::FORMAT_TYPE_SHORT),
                    strtotime('next weekday')
                )
            )
        );
        $element->setForm($form);
        $element->setId('date');
        return $element->getElementHtml();
 4
Author: Adrian Badowski, 2015-01-14 19:53:58