Я использую dnadesign / silverstripe-elemental 2.x-dev и Silverstripe 4.0.1.
Я создал модуль для страницы, чтобы держать все страницы. Вот как я добавил расширение для HomePage.
XYPage\Model\HomePage:
extensions:
- DNADesign\Elemental\Extensions\ElementalPageExtension
Это мой HomePageController:
namespace XYpage\Controller;
use PageController;
class HomePageController extends PageController
{
}
Это моя HomePageModel:
namespace XYpage\Model;
use Page;
use XYpage\Controller\HomePageController;
class HomePage extends Page
{
private static $table_name = 'HomePage';
/**
* As our controller resides in a different namespace we have to
overwrite this method
*
* @return string
*/
public function getControllerName()
{
return HomePageController::class;
}
}
Я изменил переменную шаблона на $ ElementalArea. Я вижу ожидаемый интерфейс в BackEnd.
Теперь, если я сохраняю один элемент в бэкэнде, меня всегда перенаправляют в интерфейс на страницу 404.
Когда я переключаюсь обратно на Backend, элемент связывается со страницей.
Если я заполняю содержимое в редакторе WYSIWYG в элементе содержимого и сохраняю его, содержимое отображается на странице во внешнем интерфейсе.
Если я пытаюсь редактировать этот элемент пропускает редактор WYSIWYG для содержимого.
Я изо всех сил пытался это исправить, красный документы, но я не вижу, что я сделал не так.
Существует проблема с BetterButtons & ДНАДизайн Элементаль.
Просто добавьте это, чтобы отключить BetterButtons для ElementContent.
DNADesign\Elemental\Models\ElementContent:
better_buttons_enabled: false
У вас есть две проблемы, которые я вижу сразу:
1: ваша конфигурация YAML ссылается XYPage\HomePage
где пространство имен класса на самом деле XYPage\Model\HomePage
, Я подозреваю, что это на самом деле ошибка в вашем примере, а не в вашем реальном проекте, поскольку вы говорите, что элементарный редактор работает в CMS.
2: Ваш getControllerName()
метод возвращается HomePageController::class
который не импортируется в класс, поэтому он будет преобразован в то же пространство имен, что и модель (XYPage\Model\HomePageController
). В то время как это местоположение по умолчанию / ожидаемое для контроллеров SiteTree перегрузка этого кода означает, что это все на вас! добавлять use XYPage\Controller\HomePageController;
к определению вашего класса.
После долгих отладок я выяснил, что вызвало такое поведение. В моем случае одной проблемой было то, что я использовал кнопки unclecheese / silverstripe-gridfield-better с elemental.