Есть три таблиць в БД (catalog/category) - стандартная таблица мадженто, labels и label_for_category(id_endity, id_category, id_label). В гриде выводится название категории и картинка которую я прикрепил к категории.
protected function _prepareCollection()
{
$collection = Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('name');
$collection->getSelect()
->joinLeft(array('category' => $collection->getTable('productlabels/category_check_list')), 'e.entity_id = category.id_category')
->joinLeft(array('labels' => $collection->getTable('productlabels/table_labels')), 'category.id_label = labels.id_label');
$this->setCollection($collection);
return parent::_prepareCollection();
}
protected function _prepareColumns()
{
$helper = Mage::helper('productlabels');
$this->addColumn('name', array(
'header' => $helper->__('Name'),
'index' => 'name',
));
$this->addColumn('category_page_image', array(
'header' => $helper->__('Label Image'),
'index' => 'category_page_image',
'type' => 'image',
'renderer' => 'Plumrocket_Productlabels_Block_Adminhtml_Renderer_Image',
'filter' => false,
'sortable' => false,
'align' => 'center',
));
return parent::_prepareColumns();
}
public function getRowUrl($row)
{
return $this->getUrl('*/*/edit', array('id_entity' => $row->getId()));
}
В форме редактирования нужно вывести название категории и поле select с названиями лейблов.
protected function _prepareForm()
{
$helper = Mage::helper('productlabels');
$model = Mage::registry('current_category');
$form = new Varien_Data_Form(array(
'id' => 'edit_form',
'action' => $this->getUrl('*/*/save', array(
'id_entity' => $this->getRequest()->getParam('id_entity')
)),
'method' => 'post',
));
$this->setForm($form);
$legend = $this->getRequest()->getParam('id_entity')?'Edit label':'Create new label';
$fieldset = $form->addFieldset('label_form', array('legend' => $helper->__($legend)));
$fieldset->addField('name', 'label', array(
'label' => $helper->__('Name of category'),
'name' => 'name',
));
$fieldset->addField('entity_id', 'hidden', array(
'name' => 'id_category',
));
$fieldset->addField('id_entity', 'hidden', array(
'name' => 'id_entity',
));
$fieldset->addField('id_label', 'select', array(
'label' => $helper->__('Name of category'),
'name' => 'id_label',
'values' => Mage::getModel('productlabels/block')->getCollection()->getTitle(),
));
$form->setUseContainer(true);
if($data = Mage::getSingleton('adminhtml/session')->getFormData()){
$form->setValues($data);
} else {
$form->setValues($model->getData());
}
return parent::_prepareForm();
}
Вот контролеры
public function editAction()
{
$id = $this->getRequest()->getParam('id_entity');
Mage::register('current_category', Mage::getModel('catalog/category')->load($id));
$this->loadLayout();
$this->_addContent($this->getLayout()->createBlock('productlabels/adminhtml_category_edit'));
$this->renderLayout();
}
public function saveAction()
{
if ($data = $this->getRequest()->getPost()) {
try {
$model = Mage::getModel('productlabels/category');
$model->setData($data)->setId();
if(!$model->getCreated()){
$model->setCreated(now());
}
$model->save();
Mage::getSingleton('adminhtml/session')->addSuccess($this->__('Label was saved successfully'));
Mage::getSingleton('adminhtml/session')->setFormData(false);
$this->_redirect('*/*/');
} catch (Exception $e) {
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
Mage::getSingleton('adminhtml/session')->setFormData($data);
$this->_redirect('*/*/edit', array(
'id_entity' => $this->getRequest()->getParam('id_entity')
));
}
return;
}
Mage::getSingleton('adminhtml/session')->addError($this->__('Unable to find item to save'));
$this->_redirect('*/*/');
}
Проблема решаеться если в editAction зарегестрировать три модели под одним названием
Mage::registry('current_category',
Mage::getModel('catalog/category'),
Mage::getModel('productlabels/label_for_category')
и
Mage::getModel('productlabels/category')
или каким то способом передать ети три модели в Form.php + обыеденить их.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Здравствуйте! подскажите как решить, на странице есть меню, в шапке, и в подвале, я применил фильтры к меню как сделать разные фильтры, к разным...
Это код create_userhtml, сама форма регистрация и отправка данных в create_user
Можно ли создавать классы, содержащие в качестве данных объекты этого же класса, указатели/ссылки на такие объекты, их массивы?