При выборе в меню админки пункта "Каталог->Управление категориями"страница отображается не полностью

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

25.07.2011 09:50

Необходима консультационная помощь в исправлении следующей ошибки. При выборе в меню админки пункта "Каталог->Управление категориями"страница отображается не полностью. Выводится только HTML код блока с id="catalog_category_products". Остального контента страницы просто нет, как если бы я вызывал этот контент через AJAX в обход формирования страницы. Как следствие нет ни ссылок на CSS файлы, ни на JS. То есть формирование header и footer страницы не исполняется. Дистрибутив взят с сайта Magento 1.5.1 англоязычный, с последующей установкой русификации. Все остальные страницы и фронтенд и бэкенд формируются нормально. Ссылку на страницу с проблемой дать не могу, все установлено в локальном режиме. Подскажите где искать ошибку если не переустанавливать. Я пока не очень знаком с механизмом формирования страницы в Magento. Насколько я понимаю формирование строится на основе XML макета с общим описанием распределения контентных блоков по структурным и шаблонов формирования контентых блоков. Но вот как строится страница в целом, где определяется конкретное содержание конкретной страницы, где определяется необходимость включения или отключения формирования header и footer страницы пока не нашел. Подскажите пожалуйста где искать?

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

25.07.2011 09:53

Причиной ошибки, скорей всего, является сбой интерпретатора PHP в процессе формирования страницы.
Вам нужно последовательно сделать:
1) Включить отображение ошибок интерпретатора PHP на экране (display_errors, error_reporting).
2) Включить запись системных сообщений Magento в журнал.
3) Посмотреть, что пишет Magento в журнал
4) Посмотреть исходный код проблемной страницы (после выполнения пункта 1 там могут быть диагностические сообщения интерпетатора PHP)

#3 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

25.07.2011 11:27

Спасибо за оперативную реакцию Дмитрий.
Я уже сообразил, что проблема возможно в дефектах базы данных. Я установил версию Magento 1.6 с сайта и натравил на ту же базу, что и предыдущую. Ошибка повторилась в точности. Похоже сбой возникает при чтении данных из базу об имеющихся категориях (хотя база и пуста), потому что на экран выводится только та часть HTML кода страницы, которая формирует фильтр категорий, а та которая должна содержать данные о категориях уже не появляется, хотя тогда по идее браузеру все равно должен был быть уже возвращен заголовок страницы, поэтому вопрос последовательности формирования страницы и порядок ее передачи на клиента остается открытым.

P.S. С методикой трассировки ошибок обязательно разберусь. Спасибо.

#4 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

25.07.2011 11:36

Да. Все правильно. Установил 1.6 на новую базу и все пошло без проблем.

#5 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

25.07.2011 12:38

Оказывается ошибка возникает в после создания первого товара. Пока товаров в базе нет редактирование категорий работает, как товар появляется -возникают указанные выше проблемы. Точнее проблемы появляются после первого же добавления товара в какую нибудь категорию. Удаление товара из категории не дает желаемого результата. Редактирование категорий восстанавливается после удаления товара, добавленного в категорию (видимо срабатывает какой то механизм контроля целостности данных и товар вычищается из категории только после его удаления). Вы не знаете случайно странички в Интернете где указаны ограничения и требования, которые надо обязательно соблюдать при создании и редактировании товара?

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

25.07.2011 13:26

Приведите точный текст диагнотического сообщения интерпретатора PHP или Magento.

#7 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

25.07.2011 13:31

Отображение ошибок в PHP включил
display_errors = On
error_reporting = E_ALL & ~E_NOTICE

На клиента ни чего не выводится.

Ведение логов Magento включил. Судя по записи {{base_dir}}/var/log должны были появиться файлы system.log и exeptions.log в каталоге var/log от корня сайта (каталог имеется и права на доступа на него полные). Лог-файлы не появляются при возникновении ошибки с отображением редактора категорий при наличии в одной из категорий хоть одного товара.

Где можно отследить результат исполнения запроса к БД при формировании страницы? (или хотя бы получить отправляемый при ее формировании SQL запрос, чтобы можно провести его отладку отдельно). Думаю проблема именно там.

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

25.07.2011 13:33

Включите режим разработчика
Включите сообщения E_NOTICE и E_STRICT

#9 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

27.07.2011 15:55

Под отладчиком выдавил наконец следующее сообщение об ошибке.
Fatal error: Call to undefined method Mage_Adminhtml_Block_Widget::getrowurl() in Z:\home\localhost.com\www\app\code\core\Mage\Adminhtml\Block\Widget\Grid.php on line 1622
Там как раз запускается формирование таблиц товаров в категориях судя по тому что параметром процедуры является объект класса Mage_Catalog_Model_Product или Varien_Object
IDE ZendStudio 7.1 Prof. Edition

Все вопрос снимается. Заработало. В классе предке (в Mage_Adminhtml_Block_Widget) действительно отсутствует метод getrowurl(). Отсюда и сообщение об ошибке. Закоментировал parent::getrowurl() на строке 1622 в файле app\code\core\Mage\Adminhtml\Block\Widget\Grid.php и все пошло. Вот только интересно как все это у других работает. Или они редактором не пользуются а только заливкой. Или в версиях до 1.5 такая проблема отсутствовала? И интересно что дальше будет, а то я с Магентой только второй день работаю и уже на грабли наступил :-). Хорошо еще что ZF знаком, а то совсем туго было бы.

#10 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

06.08.2011 15:17

Здравствуйте Дмитрий.

Сегодня обновил версию PHP до 5.2.14 и с сожалением убедился, что я оказался прав. Прерывание скрипта в том же месте с теми же последствиями. В результате не работает редактирование категорий товара в бэкенд.
Я обнаружил что подобный вопрос уже обсуждался в разделе по установки Магенты и именно с версией 1.5
Кстати может если у вас есть какой то отработанный комплект ПО для работы с Магентой, его стоит выложить по аналогии с Denwer (Может это упростило бы жизнь многим начинающим разработчикам и повысило бы ваши продажи русской версии Magento). Я например перепробовал версии половины архива PHP пока нашел работоспособный комплект, у которого все необходимые расширения в наличии и работают. (версию 5.2.17 поставил так в ней php5apache2_2.dll вообще не грузился с простейшим сообщением об ошибке что Апач не смог его загрузить и все, без трассировки в логах).
Что обновление версии не поможет в общем было и так ясно. Я просмотрел по иерархии классов Магенты и не нашел объявления соответствующего метода __call. Я не работал с __call но по аналогии с __autoload не трудно догадаться, что при отсутствии запускаемого метода (класса применительно к __autoload) если callback функция (а __call как и __autoload и есть такие функции) обработки ошибки не определена специально, то работает алгоритм по умолчанию, а это как раз и есть выдача сообщение об ошибке с прерыванием исполнения скрипта.
Так что пока иного решения кроме правки соответствующего кода я не нашел. Может кто подскажет.

Среда для Магенто:
Базовый комплект Денвера 3 с перенастроенным для поддержки innoDB MySQL и замененным PHP.
В общем как то так :-)

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

06.08.2011 15:43

Я использую Zend Server.

#12 Евгений Медведев
  • хотел отжать одну лицензию на много магазинлв
  • Группа: Заблокирован
  • Сообщений: 31
  • Регистрация: 25.07.2011

07.08.2011 10:56

Прошу прощения Дмитрий, но я в Zend Server человек темный (как и многие посетители вашего сайта, заинтересовавшиеся Magento). PHP входит в его комплект? То есть поставил Zend Server и имеешь полноценную среду разработки (ну не считая MySQL)? И входит ли туда отладчик (хотя судя по тому что вы писали статью о настройке XDebug - нет) Кстати, а у вас был опыт настройки ZendDebuggera в сочетании с Optimizer. Утверждается что они могут работать вместе, но если с установкой оптимайзера нет проблем, то ZendDebugger запустить мне так и не удалось. Просто я думаю начинающим важно иметь готовое решение для развертывания Magento, что называется "в один клик" (я поэтому и предлагал выложить рабочий, настроенный комплект среды :-)). Кроме того, возможно я ошибаюсь, но я похоже столкнулся с проблемой конфликта XDebug и Optimizer. Для нормальной работы отладчика, оптимайзер пришлось отключить (от остался у меня от работы над проектами с платными CMS NetCat, Amiro и прочей ерундой). Возможно это кому нибудь поможет :-).

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

07.08.2011 23:01

Да, PHP входит в комплект Zend Server.

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

14.08.2012 16:57

Fatal error: Call to undefined method Mage_Adminhtml_Block_Widget::getrowurl()

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