0

where 句を DataObjectManager に追加する必要があります。

私の既存のコードは次のようになります。

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

以下のように単純に追加しようとしましたが、フィルターが適用されず、必要な SubSiteID を持つものではなく、常にすべての BackgroundImages が返されます。

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

節に無効な​​テーブル名を入れてエラーが発生するかどうかを確認しようとしましたが、エラーが発生しないため、完全に無視されていると思われます。

誰かが私が間違っているところを教えてもらえますか?

4

1 に答える 1

1

「filter」は、FileDataObjectManager コンストラクターの 4 番目ではなく 7 番目のパラメーターです: (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を参照してください

于 2012-07-06T07:55:36.030 に答える