3.1 にアップグレードしてから、列挙値のデータオブジェクトの検索フォームで返される選択フィールドが、デフォルトの「any」オプションを返さず、最初の値を返すことに気付きました。これにより、ユーザーは「任意」ではなく、そのフィールドの特定の値を検索する必要があります。
dataobject.php で
public function getCustomSearchContext() {
$fields = $this->scaffoldSearchFields(array(
'restrictFields' => array('Field1', 'Field1')
));
$filters = array(
'SomeField' => new PartialMatchFilter('Field1'),
.....etc
);
return new SearchContext(
$this->class,
$fields,
$filters
);
}
SomePage.php
public function DOSearch() {
$context = singleton('DataObject')->getCustomSearchContext();
$fields = $context->getSearchFields();
$form = new Form($this, "DOSearch",
$fields,
new FieldList(
new FormAction('doDOSearch')
)
);
return $form;
}
public function doDOSearch($data, $form) {
$context = singleton('DataObject')->getCustomSearchContext();
$set = ArrayList::create( $context->getResults($data)->toArray() );
return $this->customise(array(
'Set1' => $Set1
))->renderWith(array('DOResults', 'Page'));
}
dataobject は、Enum 列と $searchable_fields が設定された状態でセットアップされます。返される設定値の 1 つを選択するのではなく、ユーザーが「任意」のオプションを使用できるようにしたいと考えています。