3.1 Поиск DataObjects и выбор полей

Начиная с обновления до 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'));
}

Объект данных настраивается с помощью столбца Enum и набора $searchable_fields. Я хочу, чтобы у пользователей была опция 'any' вместо того, чтобы выбирать 1 из установленных значений, которые будут возвращены.

2 ответа

Решение

Вы должны иметь возможность редактировать DropdownField в getCustomSearchContext() функционировать после эшафот $fields либо с:

$fields->fieldByName('TheNameOfTheDropdownField')->setHasEmptyDefault(true);

это позволит отменить выбор или:

$fields->fieldByName('TheNameOfTheDropdownField')->setEmptyString('Any');

который добавит пустую опцию "Any" в поле.

Это ошибка в SilverStripe, которая исправлена ​​через https://github.com/silverstripe/silverstripe-framework/pull/2566 и, надеемся, скоро появится в ядре.

Другие вопросы по тегам