Я установил посторонний бесплатный модуль и получил сбой «Strict Notice: Declaration should be compatible»

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 Антон Коробко
  • Группа: Клиент
  • Сообщений: 30
  • Регистрация: 14.01.2015

04.07.2015 05:34

Устанавила модуль, кеш почистила. И при попытке в админке зайти в пункт меню, который создал данный модуль получаю ошибку о несовместимости:
Strict Notice: Declaration of Amar_Profile_Model_Customer_Attribute::loadByCode() should be compatible with that of Mage_Eav_Model_Entity_Attribute_Abstract::loadByCode() in /var/www/magento/app/code/community/Amar/Profile/Model/Customer/Attribute.php on line 50


<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Attribute
 *
 * @author root
 */
class Amar_Profile_Model_Customer_Attribute extends Mage_Eav_Model_Entity_Attribute
{
    /**
     * 
     * @category this method returns the attribute collection of the cuzstomer only
     * @return Mage_Eav_Model_Resource_Entity_Attribute_Collection
     */
    
    
    public function _construct() {
        parent::_construct();
        $this->setEntityTypeId(Mage::getModel('eav/entity')->setType("customer")->getTypeId());
    }
    public function getCollection() 
    {
        $collection = $this->getResourceCollection()
                            ->addFieldToSelect('attribute_id','id')
                            ->addFieldToSelect('frontend_label')
                            ->addFieldToSelect('attribute_code')
                            ->addFieldToSelect('frontend_input')
                            ->addFieldToSelect('is_unique')
                            ->addFieldToSelect('is_required')
                            ->setEntityTypeFilter(1);
        return $collection;
    }
    
    
    public function loadByCode($code)
    {
        if($code != "")
        /*        parent::loadByCode(1, $code);*/
	          Mage::getModel('eav/entity_type')->loadByCode('customer');
        else
            $this->setEntityTypeId(Mage::getModel('eav/entity')->setType("customer")->getTypeId());
        return $this;
    }
    
}

?>


(изначально ругалось на строку 49, решила строчку переписать по другому, но сервер ругается все также только на мою строку)

Судя из стека выполнения, и глядя на строки 1 и 2, похоже на то что конфликт с Русской сборкой происходит?! может я и ошибаюсь :unsure:
или мы просто попадаем на заплатку в аутолоад.пхп уже как следствие ошибки стороннего модуля?


Strict Notice: Declaration of Amar_Profile_Model_Customer_Attribute::loadByCode() should be compatible with that of Mage_Eav_Model_Entity_Attribute_Abstract::loadByCode()  in /var/www/magento/app/code/community/Amar/Profile/Model/Customer/Attribute.php on line 50

#0 /var/www/magento/app/code/local/Df/Core/Autoload.php(24): mageCoreErrorHandler(2048, 'Declaration of ...', '/var/www/magent...', 50, Array)
#1 /var/www/magento/app/code/local/Df/Core/Autoload.php(24): Df_Core_Autoload::autoload()
#2 [internal function]: Df_Core_Autoload->autoload('Amar_Profile_Mo...')
#3 [internal function]: spl_autoload_call('Amar_Profile_Mo...')
#4 /var/www/magento/app/code/core/Mage/Core/Model/Config.php(1346): class_exists('Amar_Profile_Mo...')
#5 /var/www/magento/app/Mage.php(463): Mage_Core_Model_Config->getModelInstance('profile/custome...', Array)
#6 /var/www/magento/app/code/community/Amar/Profile/Block/Adminhtml/Customer/Attribute/Grid.php(31): Mage::getModel('profile/custome...')
#7 /var/www/magento/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(626): Amar_Profile_Block_Adminhtml_Customer_Attribute_Grid->_prepareCollection()
#8 /var/www/magento/app/code/core/Mage/Adminhtml/Block/Widget/Grid.php(632): Mage_Adminhtml_Block_Widget_Grid->_prepareGrid()
#9 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(918): Mage_Adminhtml_Block_Widget_Grid->_beforeToHtml()
#10 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()
#11 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('grid', true)
#12 /var/www/magento/app/code/core/Mage/Adminhtml/Block/Widget/Grid/Container.php(77): Mage_Core_Block_Abstract->getChildHtml('grid')
#13 /var/www/magento/app/design/adminhtml/default/default/template/widget/grid/container.phtml(36): Mage_Adminhtml_Block_Widget_Grid_Container->getGridHtml()
#14 /var/www/magento/app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/magent...')
#15 /var/www/magento/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#16 /var/www/magento/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#17 /var/www/magento/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#18 /var/www/magento/app/code/core/Mage/Adminhtml/Block/Widget/Container.php(308): Mage_Adminhtml_Block_Template->_toHtml()
#19 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Adminhtml_Block_Widget_Container->_toHtml()
#20 /var/www/magento/app/code/local/Df/Core/Block/Text/List.php(20): Mage_Core_Block_Abstract->toHtml()
#21 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(919): Df_Core_Block_Text_List->_toHtml()
#22 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(637): Mage_Core_Block_Abstract->toHtml()
#23 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(581): Mage_Core_Block_Abstract->_getChildHtml('content', true)
#24 /var/www/magento/app/design/adminhtml/default/default/template/page.phtml(74): Mage_Core_Block_Abstract->getChildHtml('content')
#25 /var/www/magento/app/code/core/Mage/Core/Block/Template.php(241): include('/var/www/magent...')
#26 /var/www/magento/app/code/core/Mage/Core/Block/Template.php(272): Mage_Core_Block_Template->fetchView('adminhtml/defau...')
#27 /var/www/magento/app/code/core/Mage/Core/Block/Template.php(286): Mage_Core_Block_Template->renderView()
#28 /var/www/magento/app/code/core/Mage/Adminhtml/Block/Template.php(81): Mage_Core_Block_Template->_toHtml()
#29 /var/www/magento/app/code/core/Mage/Core/Block/Abstract.php(919): Mage_Adminhtml_Block_Template->_toHtml()
#30 /var/www/magento/app/code/core/Mage/Core/Model/Layout.php(555): Mage_Core_Block_Abstract->toHtml()
#31 /var/www/magento/app/code/core/Mage/Core/Controller/Varien/Action.php(390): Mage_Core_Model_Layout->getOutput()
#32 /var/www/magento/app/code/community/Amar/Profile/controllers/Adminhtml/Customer/AttributeController.php(27): Mage_Core_Controller_Varien_Action->renderLayout()
#33 /var/www/magento/app/code/core/Mage/Core/Controller/Varien/Action.php(418): Amar_Profile_Adminhtml_Customer_AttributeController->indexAction()
#34 /var/www/magento/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#35 /var/www/magento/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#36 /var/www/magento/app/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#37 /var/www/magento/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#38 /var/www/magento/index.php(87): Mage::run('', 'store')
#39 {main}



может вам известны такие случаи? :rolleyes:

Сообщение отредактировал Антон Коробко: 04.07.2015 05:36


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

04.07.2015 08:57

Я вижу, что даже вариант переработки чужого бесплатного модуля займёт у Вас недели времени.

Я намеренно обходил вчера стороной Ваши реплики «такие мелочи хотелось бы самому разобраться и писать» и «мне интересно самой несложные проблемы решать».
Трудозатраты на программирования измеряются не количеством строк програмного кода, которые надо написать (или исправить в чужом коде), а объёмом предварительных знаний и навыков, которым надо предварительно обладать для такой работы.

Ближайшая аналогия: лётчику привести самолёт из Москвы в Санкт-Петербург - это 1 час работы. Но сколько лет предварительного труда лётчик должен инвестировать в своё образование, чтобы выполнить эту часовую работу?
Кто этого предварительно не сделал - лучше не дёргаться и просто купить билет за 50 долларов.

Так и с разработкой модулей. Сэкономить 50 долларов на модуле у Вас не получится. Просто либо купите готовый модуль с техподдержкой, либо инвестируйте неизвестный объём времени (недели, месяцы, годы?) в изучение лежащих в основе Magento технологий.

#3 Антон Коробко
  • Группа: Клиент
  • Сообщений: 30
  • Регистрация: 14.01.2015

05.07.2015 06:19

Я не уверена что платный модуль станет без проблем, так как модули с рейтингом в 5 звезд всеравно не становятся полноценно. Да я еще "зеленая" в этой цмс, но ведь все когда-то начинают с нуля, я просто не могу найти литературу по мадженто, везде только статьи, раскрывающие какие-то маленькие кусочки возможностей. Т.е. на этом форуме тех поддержки по несовместимости модулей и по кодингу я так поняла не будет :( очень жаль..

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

05.07.2015 12:25

За 8 лет работы экосистема Magento очень разумно организовалась, поэтому не надо думать, будто у Вас при разработке сто тысяч первого магазина на Magento может возникнуть какая-либо уникальная, нерешавшаяся ранее проблема.

В том числе и проблема установки модулей давным-давно решена: все разработчики коммерческих модулей предлагают опциональную услугу установки своих модулей (обычно - за дополнительные несколько десятков долларов).

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