«Возникла ошибка» при нажатии на некоторые страницы администратора Silverstripe - PullRequest
0 голосов
/ 27 сентября 2011

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

enter image description here

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

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

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

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

enter image description here

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

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>

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

У этого может быть много причин, попробуйте 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/ для краткого описания).

0 голосов
/ 07 марта 2012

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

Недопустимый класс для singleton () - ProductImageObject

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

...