1

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 つを選択するのではなく、ユーザーが「任意」のオプションを使用できるようにしたいと考えています。

4

2 に答える 2

0

これは SilverStripe のバグであり、https://github.com/silverstripe/silverstripe-framework/pull/2566で修正されており、まもなくコアに組み込まれる予定です。

于 2013-10-19T13:19:35.640 に答える