Я слежу за Silverstripe DataObjects as Pages - Part 2: Using Model Admin and URL Segments to create a product catalogue tutorial на моем локальном хосте и сталкиваюсь с проблемой боковой панели.Silverstripe DataObjects as Pages Part 2 tutorial- sidebar issue
Когда я использую тот же метод для создания боковой панели, как tutorial one, на моем сайте отображается сообщение об ошибке [Ошибка пользователя] Неиспользуемое исключение: Объект -> __ вызов(): метод «categorypages» метода не существует в «Product»
Это код, который я добавил в Product.php для отображения боковой панели.
//Return the Title as a menu title
public function MenuTitle()
{
return $this->Title;
}
// Убедитесь, что DO отображается в меню (это необходимо в противном случае боковая панель не отображается, когда не вошли в систему)
function canView()
{
return $this->CategoryPages()->canView();
}
Кто-нибудь знает, как решить эту проблему? Огромное спасибо.
Привет, Schellmax, спасибо за ваш быстрый ответ. Вы можете видеть, что я пытаюсь выяснить это СС.Я изменил строку на $ this-> Categories-> First() -> canView() Теперь эта страница работает нормально, но в администраторе CMS я нажимаю «Продукт», затем «Поиск» (чтобы показать весь существующий продукт). Он появился в Fatal Ошибка: вызов функции-члена canView() для не-объекта. Любые предложения по этому поводу? Спасибо, кучи! Sam :) – grumpypanda
, то, скорее всего, вы еще не прикрепили страницы категорий. я добавлю некоторое обходное решение в свой ответ выше – schellmax
Спасибо, Schellmax, вы легенда! Я хочу, чтобы в один прекрасный день мои навыки кодирования будут похожи на ваши. Причина, по которой я реализую функцию canView, заключается в том, что боковая панель исчезает, если я выхожу из раздела администрирования SS без нее. Я проверил каждый продукт в админ, все они имеют одну или несколько категорий, не имеет значения, связан ли продукт с категорией или нет. Сможете ли вы объяснить свой код выше немного больше, чем то, что он делает? Извините, я довольно новичок в SS. Согласно моей цели и тому, что вы сказали выше, я полагаю, что я должен просто использовать функцию canView() {return true; } Огромное спасибо!! – grumpypanda