Мне нужно создать модуль в Magento, который будет иметь несколько таблиц базы данных.Одной из функций модуля является добавление нескольких изображений.Например, находясь на странице " Добавить новый элемент " или " Редактировать элемент " в админке, с левой стороны у меня есть вкладки, одна из которых - " Элементизображения ».При нажатии я хочу, чтобы содержимое этой вкладки было моим собственным.Покопавшись в коде, выяснив, что способ рендеринга этого содержимого, Magento использует один из классов Varien_Data_Form_Element для каждого элемента в полной форме.Я хочу добавить свой собственный класс, который будет отображать элементы формы так, как я хочу.Это хорошая практика, или есть какой-то другой более элегантный способ добавления собственного контента в формы администратора?РЕДАКТИРОВАТЬ: Я должен добавить, что ни один из существующих классов не помогает моей проблеме.
РЕДАКТИРОВАНИЕ РЕШЕНИЯ: у меня есть контроллер в моем пользовательском модуле, который находится в Mypackage / Mymodule / controllers / Adminhtml / Item.php.В методе editAction () , который я использую для добавления и создания новых элементов, я создаю 2 блока, один для формы и один слева для вкладок:
$this->_addContent($this->getLayout()->createBlock('item/adminhtml_edit'))
->_addLeft($this->getLayout()->createBlock('item/adminhtml_edit_tabs'));
$this->renderLayout();
Block / Adminhtml / Edit / Tabs.php блок создает 2 вкладки слева: Общая информация и Изображения элементов , каждая из которых отображает различный контент нас правой стороны, используя классы блока.
protected function _beforeToHtml()
{
$this->addTab('item_info', array(
'label' => Mage::helper('mymodule')->__('Item Info'),
'content'=> $this->getLayout()->createBlock('item/adminhtml_edit_tab_form')->toHtml(),
));
$this->addTab('item_images', array(
'label' => Mage::helper('mymodule')->__('Item Images'),
'active' => ( $this->getRequest()->getParam('tab') == 'item_images' ) ? true : false,
'content' => $this->getLayout()->createBlock('item/adminhtml_images')->toHtml(),
));
return parent::_beforeToHtml();
}
Я хотел, чтобы вкладка item_images отображала мои собственные элементы формы и значения, а не элементы формы varien по умолчанию.
class Mypackage_Mymodule_Block_Adminhtml_Images extends Mage_Core_Block_Template
{
public function __construct()
{
parent::__construct();
$this->setTemplate('item/images.phtml'); //This is in adminhtml design
}
public function getPostId()
{
return $this->getRequest()->getParam('id');
}
public function getExistingImages()
{
return Mage::getModel('mymodule/item')->getImages($this->getPostId());
}
}
Затем в шаблоне приложения / design / adminhtml / default / default / template / item / images.phtml вы можете использовать следующие значения:
//You can add your own custom form fields here and all of them will be included in the form
foreach($this->getExistingImages() as $_img):
//Do something with each image
endforeach;
//You can add your own custom form fields here and all of them will be included in the form