伪内联网格字段值-Silverstripe 3&;GridFieldExtensions

伪内联网格字段值-Silverstripe 3&;GridFieldExtensions,silverstripe,Silverstripe,我使用SilverStripe GridFieldExtensions进行内联编辑。我动态地为其创建字段,因此它们不作为数据库字段存在,并且在保存/打开对象后始终为空 $i = 1; $inline_fields = array(); do { $field = 'Content' . $i; $title = 'Spalte ' . $i; $inline_fields[$field] = array( 'title' => $title,

我使用SilverStripe GridFieldExtensions进行内联编辑。我动态地为其创建字段,因此它们不作为数据库字段存在,并且在保存/打开对象后始终为空

$i = 1;
$inline_fields = array();

do {
    $field = 'Content' . $i;
    $title = 'Spalte ' . $i;

    $inline_fields[$field] = array(
       'title' => $title,
       'field' => 'TextField'
    );

    $i++;
} while( $i <= $this->Columns );
$i=1;
$inline_fields=array();
做{
$field='Content'.$i;
$title='Spalte'。$i;
$inline_字段[$field]=数组(
“title”=>$title,
'字段'=>'文本字段'
);
$i++;
}而(i),;
有没有办法像在其他字段上一样定义内联字段的值
TextField::create('Foo','Foo','Bar')

编辑:

所以我会尽量把一切解释得更清楚一点。 我有对象“Table”和“Row”

在“表”中,您可以定义一个“行”应有多少列。根据“表”上的列数,“行”a的内联字段如上所示生成

但是“行”只有一个名为“内容”的字段,因为我不知道用户希望有多少列。因此,我将放入“Content1,Content2,Content3,…”中的所有内容作为内爆数组存储在“Content”中

到目前为止还不错,但我需要在“Content1,Content2,Content3,…”字段中显示用户的内容。如果这些字段不是内联字段,我会这样做
TextField::create(Name,Title,Value)


因此,我需要找到一种将预填充内容显示到内联字段中的方法。

setDisplayFields
函数中,您可以指定一个
回调
函数,该函数将返回您要使用的字段

要使用此函数,您需要修改
$inline_字段
数组以调用此回调:

$inline_fields[$field] = array(
    'title' => $title,
    'callback' => 'CustomPage::customContentField'
);
在类中创建回调函数,该函数将返回要使用的字段:

static function customContentField($record, $col, $grid) {
    $value = '123';
    $field = TextField::create($col, $col, $value);
    return $field;
}
这允许您指定
$value
。但是,这将无法按您所希望的方式运行。在
文本字段中设置
$值
将设置默认值。如果正在加载现有行,则不会使用
$value


因此,当您创建新行时,该代码将使用指定的
$value
,但在保存页面后,
$value
将不被使用。

我不清楚您试图做什么以及问题出在哪里。你能详细说明一下吗?也许可以举个例子。好吧,我会尽量让一切变得更清晰。很遗憾,这并不能解决我的问题。现在你知道我想做什么了。有没有办法做到这一点?一种方法是使用自定义JS将内容放入字段中?你觉得呢,那是可能的。或者有另一种方法。等我有时间的时候,我会四处看看,看看是否能找到另一种方法来加载数据。非常感谢。直到我能用JS的方式。我已经完成了将内容加载到字段中的步骤,现在我只需要这样做,这样就可以了。