2012-07-06 97 views
0

我需要添加一個where子句到我的DataObjectManager。Silverstripe:添加where子句到ImageDataObjectManager

我現有的代碼如下所示:

$fields->addFieldToTab('Root.Backgrounds', new ImageDataObjectManager( 
     $this->owner, 
     'BackgroundImages', 
     'BackgroundImage', 
)); 

我試圖簡單地增加它像下面的,但它並不適用於過濾器,我總是讓所有的BackgroundImages最終返回,而不是那些與需要SubSiteID。

$fields->addFieldToTab('Root.Backgrounds', new ImageDataObjectManager( 
     $this->owner, 
     'BackgroundImages', 
     'BackgroundImage', 
     "'BackgroundImage.SiteConfigID' = '".$this->owner->SubsiteID."'" 
    )); 

我試圖把一個無效的表名子句中看到,如果我能得到它的錯誤,但它並沒有,這將導致我相信,它被完全忽略。

有人可以告訴我哪裏錯了嗎?

回答

1

「過濾器」是FileDataObjectManager構造的第七參數,而不是第4名:(ImageDataObjectManager採用相同的參數)

$manager = new FileDataObjectManager(
    $this, // Controller 
    'Resources', // Source name 
    'Resource', // Source class 
    'Attachment', // File name on DataObject 
    array(
    'Name' => 'Name', 
    'Description' => 'Description', 
    'Category' => 'Category' 
), // Headings 
    'getCMSFields_forPopup' // Detail fields (function name or FieldSet object) 
    // Filter clause <- **ADD YOUR FILTER HERE** 
    // Sort clause 
    // Join clause 
); 

看到http://doc.silverstripe.org/old/modules:dataobjectmanager

+0

如何傳遞空參數是它只是像「 ','',...等等? – Fraser 2012-07-07 01:11:50

+1

只是通過'null'在這種情況下 - 看構造函數:'公共職能__construct($控制器,$ =命名空,$ sourceClass = NULL,$ fileFieldName = NULL,$ fieldList中= NULL,$ detailFormFields = NULL,$ sourceFilter = 「」,$ sourceSort =「」,$ sourceJoin =「」)' – schellmax 2012-07-07 10:57:33