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()
);

これは、遅延ロードされたリスト(必要になるまで照会されない)であるリレーションゲッターで直接機能し、自動的にページ付けされます。ここにどのように収まるかはよくわかりませんがsetParentIdName("FolderID")、おそらく不要です。注意:実際のコードベースではこれを試していません。

より高いレベルでAPIを理解するためのヘルプが必要な場合は、GridFieldのドキュメント「データモデル」トピックを参照してください。

モジュールをSS3用に準備するのを手伝ってくれてありがとう!:)

于 2012-11-14T21:04:53.590 に答える