在 php 文件中添加 CMS 字段后出现内部服务器错误

Internal Server Error after adding CMS fields in php file

我为模板创建了 Homepage.ss,为页面类型创建了 Homepage.php,在添加一些代码以在 php 文件中添加一个字段后,我得到了一个内部服务器在页面右上角的小 window 中弹出错误消息,我也无法进入管理页面的编辑模式或预览模式。

已经刷新了缓存,运行 dev/build 也没有用。

下面是admin进入首页时的截图

i am getting an internal server error message that pops up in a small window at the top right corner of the page

首先,当您遇到系统错误时,您通常可以进行一些基本的调试以找出实际问题所在。这可能涉及将 SS_ENVIRONMENT_TYPE .env var 设置为 "dev" 以便打印异常跟踪(直接打印到屏幕或在您的网络请求浏览器监视器中 AJAX 请求)。

一旦您知道问题出在哪里,您就可以找出解决方法。


您的问题是您没有处理代码中的任何 class 名称空间。 PagePageController 存在于全局命名空间中,但其他所有内容都在命名空间中。试试这个:

<?php

use SilverStripe\Forms\HTMLEditor\HTMLEditorField;

class Homepage extends Page
{
    private static $db = [
        'BottomContent' => 'HTMLText',
    ];

    public function getCMSFields()
    {
        $fields = parent::getCMSFields();
        $fields->addFieldToTab('Root.Main', HTMLEditorField::create('BottomContent', 'Bottom Content'));
        return $fields;
    }
}