0

我正在尝试将安全文件 silverstripe 模块更新为 SS3。

在其中,作者使用了以下 ComplexTableField:

    class SecureFileTokenPermissionDecorator extends DataExtension {
       static $has_many = array(
           'AccessTokens' => 'SecureFileAccessToken'
       );

    ....

    $tokenList = new ComplexTableField(
        $this->owner,
        'ContainedFileTokens',
        'SecureFileAccessToken',
        null,
        null,
        "File.ParentID = '{$this->owner->ID}'",
        $sourceSort = null,
        "JOIN File ON FileID = File.ID"
    ));
    $tokenList->setParentIdName('FolderID');
    $tokenList->setRelationAutoSetting(false);

    ....
    }

我想知道如何用 gridfField 表示相同的数据/关系。谢谢!

4

1 回答 1

0

查看安全文件模块源代码,我建议进行以下设置:

$tokenList = $gridField = new GridField(
    'AccessTokens', 
    'Tokens', 
    $this->owner->AccessTokens(), 
    GridFieldConfig_RelationEditor::create()
);

这直接在关系 getter 上工作,这是一个延迟加载的列表(直到必要时才查询),并自动分页。我不太确定setParentIdName("FolderID")这里的适合度如何,可能没有必要。警告:尚未在实际代码库上尝试过此操作。

如果您需要一些帮助来理解更高级别的 API,请查看GridField 文档“数据模型”主题

感谢您帮助为 SS3 准备模块!:)

于 2012-11-14T21:04:53.590 回答