Принцип работы моделей

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 yuriya
  • Группа: Пользователь
  • Сообщений: 60
  • Регистрация: 04.11.2010

24.08.2012 15:11

Ковыряю исходники Magento, и не могу понять принцип работы моделей..
К примеру, есть 3 класса моделей, наследников Mage_Core_Model_Abstract, Mage_Core_Model_Mysql4_Abstract и Mage_Core_Model_Mysql4_Collection_Abstract
В контролере и в блоках используется только класс наследник Mage_Core_Model_Abstract, но каким-то образом работают и остальные 2 класса??? Откуда идет к ним обращение, каким образом они используются??? Только не бейте сильно, я только начал изучать магенту.

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

24.08.2012 19:46

Просто установите себе нормальную среду разработки - она всё скажет.

#3 yuriya
  • Группа: Пользователь
  • Сообщений: 60
  • Регистрация: 04.11.2010

24.08.2012 20:41

Zend Studio стоит

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

24.08.2012 21:16

Сформулируйте ваш вопрос одним конкретным вопросительным предложением.

#5 yuriya
  • Группа: Пользователь
  • Сообщений: 60
  • Регистрация: 04.11.2010

24.08.2012 21:45

Попробую..
Для примера возьму готовый плагин показа банеров

Контролер

class Uni_Banner_Adminhtml_BannergroupController extends Mage_Adminhtml_Controller_action {

    protected function _initAction() {
        $this->loadLayout()
                ->_setActiveMenu('banner/items')
                ->_addBreadcrumb(Mage::helper('adminhtml')->__('Items Manager'), Mage::helper('adminhtml')->__('Item Manager'));
        $id = $this->getRequest()->getParam('id');
        $model = Mage::getModel('banner/bannergroup')->load($id);
        if ($model->getId() || $id == 0) {
            $data = Mage::getSingleton('adminhtml/session')->getFormData(true);
            if (!empty($data)) {
                $model->setData($data);
            }
        }
        Mage::register('bannergroup_data', $model);
        return $this;
    }

    public function indexAction() {
        $this->_initAction()
                ->renderLayout();
    }
}


Блок 'banner/bannergroup'
class Uni_Banner_Block_Adminhtml_Bannergroup extends Mage_Adminhtml_Block_Widget_Grid_Container {

    public function __construct() {
        $this->_controller = 'adminhtml_bannergroup';
        $this->_blockGroup = 'banner';
        $this->_headerText = Mage::helper('banner')->__('Banner Group Manager');
        $this->_addButtonLabel = Mage::helper('banner')->__('Add Banner Group');
        parent::__construct();
    }

}


Этот блок можно сказать пустой, только заголовки и кнопки выводит. Как к нему другие блоки подключаются, которые непосредственно таблицу с данными выводят..?

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

24.08.2012 21:46

Сформулируйте ваш вопрос одним конкретным вопросительным предложением.

#7 yuriya
  • Группа: Пользователь
  • Сообщений: 60
  • Регистрация: 04.11.2010

24.08.2012 22:06

Каким образом на странице выводится grid описанный в классе

class Uni_Banner_Block_Adminhtml_Bannergroup_Grid extends Mage_Adminhtml_Block_Widget_Grid

если этого класса ни в контролере ни блоке Uni_Banner_Block_Adminhtml_Bannergroup нет..

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

25.08.2012 05:03

Система создаёт блоки на основе макетных правил.

Поделиться темой: