Я пытаюсь решить проблему с некоторыми страницами администрирования 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>
У этого может быть много причин, попробуйте 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/ для краткого описания).
Из того, что я вижу, вы должны проверить класс PHP, который определяет вашу страницу Cart. Скорее всего, у вас что-то написано неправильно или что-то неправильно.
Плохой класс для singleton () – ProductImageObject
Это наш ключ. Попробуйте проверить строку 125 продукта Product.php.