【问题标题】:Has_many on a ModelAdminModelAdmin 上的 Has_many
【发布时间】:2018-08-26 17:24:18
【问题描述】:

我在 Silverstripe 4 上有两个 DataObject。 首先是一个与该测验的问题有一个 has_many-relationships 的测验。

use SilverStripe\ORM\DataObject;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\DateField;
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\CheckboxField;

class Quiz extends DataObject {

    private static $db = [
    "Name" => "Varchar(200)",
    "bis" => "Date()",
    "aktiv" => "Boolean",
    "Mail" => "Boolean",
    "MailText" => "Text"
    ];

    private static $has_one = [
    ];

    private static $has_many = [
    "Fragen" => Quiz_Fragen::class
    ];

问题的代码。

use SilverStripe\ORM\DataObject;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\TextareaField;

class Quiz_Fragen extends DataObject {

    private static $db = [
    "Frage" => "HTMLText",
    "Art" => "Enum(array('auswählen','MC','Text','Check'))",
    "OP1" => "Varchar(400)",
    "OP2" => "Varchar(400)",
    "OP3" => "Varchar(400)",
    "OP4" => "Varchar(400)",
    "Foul" => "Varchar(50)",
    "Team" => "Enum(array('A','B'))",
    "Punkte" => "Varchar(200)",
    "Down" => "Enum(array('1','2','3','4','Try','FK'))",
    "Pos" => "Varchar(25)",
    "Distanz" => "Varchar(2)",
    "Uhr" => "Enum(array('Snap','Ballfreigabe','Down ohne Zeit','keine','läuft'))",
    "Sonstiges" => "Varchar(50)",
    "Antwort" => "HTMLText",
    "SortOrder" => "Int",
    "Grund" => "HTMLText",
    "Pkt" =>"Enum(array('1','2','3','4','5','6','7','8','9','10','11','12'))"
    ];

    private static $has_one = [
    "Quiz" => Quiz::class
    ];

    private static $has_many = [

    ];

在 Silverstripe 3 中,我选择了一个数据对象测验条目,顶部有一个链接,可以查看与所选测验相关的问题。我错过了 Silverstripe 4 中的这个链接。我确定我只是错过了一些小东西。但我找不到解决办法。

【问题讨论】:

    标签: php silverstripe silverstripe-4 modeladmin


    【解决方案1】:

    这是字段列表。 在数据对象测验中,我以这种方式添加了字段。

    $fields = FieldList::create(
                TextField::create('Name','Name des Quiz'),
                DateField::create('bis','Quiz läuft bis'),
                LiteralField::create("Text", "Vor der Aktivierung die Fragen eintragen. Sobald aktiviert wird bekommen die Benutzer eine E-Mail.<br /><br />"),
                CheckboxField::create('aktiv', 'Quiz aktivieren')
            );
    

    当我使用我的 SS 3 版本的旧方式时。有用。这样问题就解决了。

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 2013-04-17
      • 2011-08-12
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2017-05-24
      • 2012-05-08
      相关资源
      最近更新 更多