Элементарный модуль Silverstripe перенаправляет на страницу интерфейса 404 при сохранении элемента

Я использую 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 для содержимого.

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

1

Решение

Существует проблема с BetterButtons & ДНАДизайн Элементаль.

Просто добавьте это, чтобы отключить BetterButtons для ElementContent.

DNADesign\Elemental\Models\ElementContent:
better_buttons_enabled: false
1

Другие решения

У вас есть две проблемы, которые я вижу сразу:

1: ваша конфигурация YAML ссылается XYPage\HomePageгде пространство имен класса на самом деле XYPage\Model\HomePage, Я подозреваю, что это на самом деле ошибка в вашем примере, а не в вашем реальном проекте, поскольку вы говорите, что элементарный редактор работает в CMS.

2: Ваш getControllerName() метод возвращается HomePageController::class который не импортируется в класс, поэтому он будет преобразован в то же пространство имен, что и модель (XYPage\Model\HomePageController). В то время как это местоположение по умолчанию / ожидаемое для контроллеров SiteTree перегрузка этого кода означает, что это все на вас! добавлять use XYPage\Controller\HomePageController; к определению вашего класса.

1

После долгих отладок я выяснил, что вызвало такое поведение. В моем случае одной проблемой было то, что я использовал кнопки unclecheese / silverstripe-gridfield-better с elemental.

Следующая проблема — это ошибка реакции:Сообщение об ошибке:

0
По вопросам рекламы [email protected]