Средство выбора даты 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') )
));
Любой вклад был бы весьма признателен.
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
$элемент должен принадлежать форме 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();