Php Silverstripe Elemental模块重定向到前端404页面上的element save

Php Silverstripe Elemental模块重定向到前端404页面上的element save,php,silverstripe,silverstripe-4,Php,Silverstripe,Silverstripe 4,我使用dnadesign/silverstripe elemental 2.x-dev和silverstripe 4.0.1 我为页面创建了一个模块来保存所有页面。这就是我如何将扩展添加到主页的方式 XYPage\Model\HomePage: extensions: - DNADesign\Elemental\Extensions\ElementalPageExtension 这是我的主页控制器: namespace XYpage\Control

我使用dnadesign/silverstripe elemental 2.x-dev和silverstripe 4.0.1

我为页面创建了一个模块来保存所有页面。这就是我如何将扩展添加到主页的方式

    XYPage\Model\HomePage:
      extensions: 
        - DNADesign\Elemental\Extensions\ElementalPageExtension
这是我的主页控制器:

    namespace XYpage\Controller;

    use PageController;

    class HomePageController extends PageController
    {
    }
这是我的主页模型:

    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。我在后端看到了预期的UI

现在,如果我在后端保存一个元素,我总是会被重定向到前端的404页面

当我切换回后端时,元素链接到页面

如果我在content元素上向WYSIWYG编辑器填充内容并保存,内容将显示在前端的页面上

如果我试图编辑该元素,就会错过内容的所见即所得编辑器


我试图解决这个问题,但我看不出我做错了什么。

您有两个问题,我可以立即看到:

1:YAML配置引用的是
XYPage\HomePage
,其中类的名称空间实际上是
XYPage\Model\HomePage
。我怀疑这实际上是您的示例中的错误,而不是您的实际项目中的错误,因为您说元素编辑器正在CMS中工作


2:您的
getControllerName()
方法返回的
HomePageController::class
未导入到类中,因此它将解析为与模型相同的命名空间(
XYPage\model\HomePageController
)。而对于SiteTree控制器,重载此代码意味着一切都在您自己身上!添加
使用XYPage\Controller\HomePageController到您的类定义。

经过大量调试,我发现了导致这种行为的原因。在我的例子中,一个问题是我在元素中使用了Unclecese/silverstripe gridfield betterbuttons


下一个问题是react错误:

BetterButtons和DNADesign元素存在问题

只需添加此项即可同时禁用ElementContent的BetterButtons

DNADesign\Elemental\Models\ElementContent:
  better_buttons_enabled: false

谢谢你的回答。对不起,你说得不够准确。你指出的错误实际上只是我的问题。我现在有点绝望,对。请提供一个可以复制的示例。示例是什么样子的?缺少什么信息?