Silverstripe元素模块重定向到元素保存的前端404页面

时间:2018-01-17 09:43:34

标签: php silverstripe silverstripe-4

我使用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页面的前端。

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

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

如果我尝试编辑该元素,则会错过内容的WYSIWYG编辑器。

我努力解决这个问题,红色文档,但我看不出我做错了什么。

3 个答案:

答案 0 :(得分:1)

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

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

2:您的getControllerName()方法正在返回HomePageController::class,该方法未在类中导入,因此它将解析为与模型(XYPage\Model\HomePageController)相同的命名空间。虽然SiteTree控制器为this is the default/expected location,但重载此代码意味着它全部在你身上!将use XYPage\Controller\HomePageController;添加到您的班级定义中。

答案 1 :(得分:1)

BetterButtons& DNADesign Elemental。

在此期间,只需添加此项即可禁用ElementContent的BetterButtons。

DNADesign\Elemental\Models\ElementContent:
  better_buttons_enabled: false

答案 2 :(得分:0)

经过大量调试后我发现了导致这种行为的原因。在我的情况下,一个问题是我使用了unclecheese / silverstripe-gridfield-betterbuttons with elemental。

下一个问题是反应错误:Error Message: