1

事实:SS 4.0.1、dnadesign/silverstripe-elemental 2.x-dev、php 7.1 和 Zauberfisches Vagrant box Jessy 版本 3

我制作了一个元素元素,它是单个元素的持有者:

namespace R12page\Elements;

use DNADesign\Elemental\Models\BaseElement;
use SilverStripe\Forms\GridField\GridField;
use SilverStripe\Forms\GridField\GridFieldConfig_RecordEditor;
use SilverStripe\Versioned\Versioned;
use UndefinedOffset\SortableGridField\Forms\GridFieldSortableRows;


class ImageRasterElement extends BaseElement
{

private static $singular_name = 'Image Raster Element';

private static $plural_name = 'Images Raster Elements';

private static $description = 'Generates an Image Raster for multiple single Elements';

private static $table_name = 'ImageRasterElement';

private static $has_many = [
    'SingleElements' => SingleElement::class
];


private static $extensions = [
    Versioned::class . '.stagedversioned',
];

public function getType()
{
    return 'ImageRasterElement';
}

public function getCMSFields()
{
    $fields = parent::getCMSFields();

    $singleElements = $this->SingleElements();
    $singleElementGridConfig = GridFieldConfig_RecordEditor::create();
    $singleElementGridConfig->addComponent(new GridFieldSortableRows('SortOrder'));
    $singleElementGrid = GridField::create('SingleElements', 'Single Elements of this Page', $singleElements, $singleElementGridConfig);

    $fields->addFieldsToTab('Root.Main',  $singleElementGrid);

    return $fields;
}
}

这个元素有_许多单个元素:它们看起来像:

 namespace R12page\Elements;


 use R12page\Model\News;
 use R12page\Model\People;
 use R12page\Model\References;
 use SilverStripe\ORM\DataObject;
 use SilverStripe\Versioned\Versioned;

class SingleElement extends DataObject
{
private static $table_name = 'SingleElement';


private static $db = [
    'Reference' => 'Boolean',
    'People' => 'Boolean',
    'News' => 'Boolean',
    'SortOrder' => 'Int'
];

private static $has_one = [
    'News' => News::class,
    'People' => People::class,
    'Reference' => References::class,
    'ImageRasterElements' => ImageRasterElement::class
];

private static $summary_fields = [
    'News.Headline' => 'News',
    'People.Name' => 'People',
    'Reference.Headline' => 'Reference'
];

private static $extensions = [
    Versioned::class . '.stagedversioned',
];


}

每个单个元素都有一个 has_one 到一个数据对象。看起来像:

 namespace R12page\Model;

 use R12page\Elements\SingleElement;
 use SilverStripe\ORM\DataObject;
 use SilverStripe\Versioned\Versioned;

class News extends DataObject
{
private static $table_name = 'News';

private static $db = [
    'Headline' => 'Varchar',
    'SubHeadline' => 'Varchar',
    'Date' => 'Date',
    'DatePublished' => 'Date',
    'Content' => 'HTMLText',
    'IsActiv' => 'Boolean',
    'DisplayOnHomePage' => 'Boolean'
];

private static $has_one = [
    'Mobile' => Size::class,
    'Screen' => Size::Class
];

private static $has_many = [
    'SingleElements' => SingleElement::class
];

private static $owns = [
    'SingleElements'
];

private static $summary_fields = [
    'Headline' => 'Headline',
    'Mobile.Title' => 'Mobile',
    'Screen.Title' => 'Screen'
];

private static $extensions = [
    Versioned::class . '.stagedversioned',
];

}

到目前为止,一切都很好。这就是它在管理区域中的样子。

这是它在管理区域中的样子

奇怪的是,如果我添加一个元素并尝试创建它,我会得到:保存单个元素后的屏幕

当我刷新页面时,我可以看到页面的内容,我可以毫无问题地保存它。如果使用 php_debug 一切看起来都很好。我也没有控制台中的错误消息,我认为这与我遇到的问题有关。我只是得到警告:

在此处输入图像描述

但我认为警告不应该是问题。准确地说,我收到一个错误,因为没有加载字体。

请帮我调试一下。我尝试了打洞日来让它发挥作用。我无法确定我遇到的问题。

这是我得到的回复:

回复

对我来说它看起来没问题。

这是来自浏览器 networktap 的响应: 在此处输入图像描述

查看我可以确认的事情:

Elemental 可以进行全新安装。

如果我切换到实时模式,则没有任何变化。

如果我尝试使用 elemental 附带的内容元素,它具有相同的行为。

4

0 回答 0