Php Silverstripe Elemental模块重定向到前端404页面上的element save
我使用dnadesign/silverstripe elemental 2.x-dev和silverstripe 4.0.1 我为页面创建了一个模块来保存所有页面。这就是我如何将扩展添加到主页的方式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
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
谢谢你的回答。对不起,你说得不够准确。你指出的错误实际上只是我的问题。我现在有点绝望,对。请提供一个可以复制的示例。示例是什么样子的?缺少什么信息?