Возникает ошибка при нажатии на некоторые страницы администрирования Silverstripe.

Я пытаюсь решить проблему с некоторыми страницами администрирования Silverstripe. Каждый раз, когда я нажимаю на страницу «Корзина» или «Пример продукта», появляется сообщение «Произошла ошибка», и страница не отображается. Пожалуйста, смотрите прикрепленное изображение.

введите здесь описание изображения

Как вы можете видеть, страницы Корзина и значки продуктов-примеров отличаются от остальных. Я не писал код сам и никогда не сталкивался с этим раньше, поэтому буду признателен за любое предложение о том, с чего мне начать решать проблему.

Я могу скопировать код здесь, если вы можете сказать мне, какую часть. Спасибо вам большое за ваше время.

С уважением Сэм

Сообщение консоли Firefox при нажатии на страницу корзины.

введите здесь описание изображения

Дополнительное сообщение об ошибке на вкладке ответа консоли:

ERROR [User Error]: Bad class to singleton() - ProductImageObject
IN POST /admin/getitem?ID=17&ajax=1
Line 334 in /home/xxx/subdomains/xxx/sapphire/core/Core.php

Source
======
  325:  *
  326:  * @param string $className
  327:  * @return Object
  328:  */
  329: function singleton($className) {
  330:  global $_SINGLETONS;
  331:  if(!isset($className)) user_error("singleton() Called without a class", E_USER_ERROR);
  332:  if(!is_string($className)) user_error("singleton() passed bad class_name: " .
   var_export($className,true), E_USER_ERROR);
  333:  if(!isset($_SINGLETONS[$className])) {
* 334:      if(!class_exists($className)) user_error("Bad class to singleton() - $className",
   E_USER_ERROR);
  335:      $_SINGLETONS[$className] = Object::strong_create($className,null, true);
  336:      if(!$_SINGLETONS[$className]) user_error("singleton() Unknown class '$className'", E_USER_ERROR);
  337:  }
  338:  return $_SINGLETONS[$className];
  339: }
  340: 

Trace
=====
<ul>user_error(Bad class to singleton() - ProductImageObject,256)
line 334 of Core.php

singleton(ProductImageObject)
line 96 of DataObjectManager.php

DataObjectManager->__construct(Product,ProductImages,ProductImageObject,Array,getCMSFields_forPopup,,Created DESC,)
line 48 of FileDataObjectManager.php

FileDataObjectManager->__construct(Product,ProductImages,ProductImageObject,ProductImage,Array,getCMSFields_forPopup)
line 125 of Product.php

Product->getCMSFields(CMSMain)
line 444 of CMSMain.php

CMSMain->getEditForm(17)
line 1021 of LeftAndMain.php

LeftAndMain->EditForm()
line 382 of LeftAndMain.php

LeftAndMain->getitem(SS_HTTPRequest)
line 193 of Controller.php

Controller->handleAction(SS_HTTPRequest)
line 137 of RequestHandler.php

RequestHandler->handleRequest(SS_HTTPRequest)
line 147 of Controller.php

Controller->handleRequest(SS_HTTPRequest)
line 281 of Director.php

Director::handleRequest(SS_HTTPRequest,Session)
line 124 of Director.php

Director::direct(/admin/getitem)
line 127 of main.php

</ul>

person grumpypanda    schedule 26.09.2011    source источник
comment
У вас есть Firebug, чтобы вы могли видеть, какие ошибки выдает консоль? Можно ли просматривать лог-файлы на сервере?   -  person Brandon    schedule 27.09.2011
comment
Привет, Брэндон, спасибо за ответ, я загрузил изображение консоли выше, есть идеи? Извините, а где посмотреть лог-файлы? Я новичок в этом, любая помощь приветствуется. спасибо, С   -  person grumpypanda    schedule 27.09.2011
comment
нажмите на знак + перед POST, а затем посмотрите на вкладку ответа (или вкладку html). Что ты видишь?   -  person greg0ire    schedule 27.09.2011
comment
Привет Грег, там написано Произошла ошибка, больше ничего. Какие еще источники вам нужны? Спасибо.   -  person grumpypanda    schedule 27.09.2011
comment
как @xeera упоминает ниже, переведите свой сайт в режим разработки (вы можете просто добавить «?isDev=1» к своему URL-адресу администратора) и опубликуйте запись POST здесь снова (откройте вкладку ответа, как было предложено выше!)   -  person schellmax    schedule 29.09.2011
comment
Спасибо за внимание, я добавил сообщение об ошибке в консоль и ответ, когда я щелкнул страницу корзины в админке. Любое направление приветствуется!   -  person grumpypanda    schedule 29.09.2011
comment
Вы пытались добавить «?flush=All» к URL-адресу администратора? в случае, если это не поможет, вы должны опубликовать фрагмент кода (zip-файл). проблема может быть связана с отношением страницы вашей корзины (см. тип страницы при наведении курсора на нее в cms) к объектам «ProductImageObject».   -  person schellmax    schedule 02.10.2011


Ответы (2)


У этого может быть много причин, попробуйте 2 вещи, чтобы начать:

1) Переведите свой сайт в режим разработки (если это еще не сделано): http://doc.silverstripe.org/sapphire/en/topics/debugging#dev-mode

2) Журнал ошибок (на стороне сервера): http://doc.silverstripe.org/sapphire/en/topics/error-handling#filesystem-logs

Это поможет вам с ошибками на стороне сервера (и "произошла ошибка/500" очень похоже на это) - вы должны найти запись, связанную с этим, в файле журнала. Если это просто клиентская/JS вещь, вам нужно глубже погрузиться в firebug...

И не беспокойтесь о значках в дереве страниц, это функция (см. http://www.ssbits.com/snippets/2009/spice-up-your-cms-sitetree/ для краткого описания).

person xeraa    schedule 27.09.2011

Из того, что я вижу, вы должны проверить класс PHP, который определяет вашу страницу корзины. Скорее всего, вы что-то написали с ошибкой или опечаткой.

Плохой класс для singleton() - ProductImageObject

Это наша подсказка. Попробуйте проверить строку 125 Product.php.

person jdalangin    schedule 07.03.2012