SearchContext
class SearchContext (View source)
Manages searching of properties on one or more DataObject types, based on a given set of input parameters.
SearchContext is intentionally decoupled from any controller-logic, it just receives a set of search parameters and an object class it acts on.
The default output of a SearchContext is either a SQLSelect object for further refinement, or a SS_List that can be used to display search results, e.g. in a TableListField instance.
In case you need multiple contexts, consider namespacing your request parameters by using FieldList->namespace() on the $fields constructor parameter.
Each DataObject subclass can have multiple search contexts for different cases, e.g. for a limited frontend search and a fully featured backend search. By default, you can use DataObject->getDefaultSearchContext() which is automatically scaffolded. It uses DataObject::$searchable_fields to determine which fields to include.
Traits
A class that can be instantiated or replaced via DI
Properties
protected | T> | $modelClass | DataObject subclass to which search parameters relate to. |
|
protected | FieldList | $fields | FormFields mapping to DataObject::$db properties which are supposed to be searchable. |
|
protected | SearchFilter[] | $filters | Array of SearchFilter subclasses. |
|
protected | array | $searchParams | Key/value pairs of search fields to search terms |
Methods
An implementation of the factory method, allows you to create an instance of a class
Creates a class instance by the "singleton" design pattern.
A key value pair of values that should be searched for.
Returns a result set from the given search parameters.
Callback map function to filter fields with empty values from being included in the search expression.
Gets a list of what fields were searched and the values provided for each field. Returns an ArrayList of ArrayData, suitable for rendering on a template.
Details
static Injectable
create(mixed ...$args)
An implementation of the factory method, allows you to create an instance of a class
This method will defer class substitution to the Injector API, which can be customised via the Config API to declare substitution classes.
This can be called in one of two ways - either calling via the class directly, or calling on Object and passing the class name as the first parameter. The following are equivalent: $list = DataList::create(SiteTree::class); $list = SiteTree::get();
static Injectable
singleton(string $class = null)
Creates a class instance by the "singleton" design pattern.
It will always return the same instance for this class, which can be used for performance reasons and as a simple way to access instance methods which don't rely on instance data (e.g. the custom SilverStripe static handling).
__construct(T> $modelClass, FieldList $fields = null, array $filters = null)
A key value pair of values that should be searched for.
The keys should match the field names specified in SearchContext::$fields. Usually these values come from a submitted searchform in the form of a $_REQUEST object. CAUTION: All values should be treated as insecure client input.
FieldList
getSearchFields()
Returns scaffolded search fields for UI.
protected
applyBaseTableFields()
No description
T>
getQuery(array $searchParams, array|bool|string $sort = false, int|array|null $limit = false, DataList $existingQuery = null)
Returns a SQL object representing the search context for the given list of query parameters.
T>
getResults(array $searchParams, array|bool|string $sort = false, array|null|string $limit = null)
Returns a result set from the given search parameters.
bool
clearEmptySearchFields(mixed $value)
Callback map function to filter fields with empty values from being included in the search expression.
SearchFilter|null
getFilter(string $name)
Accessor for the filter attached to a named field.
SearchFilter[]
getFilters()
Get the map of filters in the current search context.
setFilters(SearchFilter[] $filters)
Overwrite the current search context filter map.
addFilter(SearchFilter $filter)
Adds a instance of SearchFilter.
removeFilterByName(string $name)
Removes a filter by name.
FieldList
getFields()
Get the list of searchable fields in the current search context.
setFields(FieldList $fields)
Apply a list of searchable fields to the current search context.
addField(FormField $field)
Adds a new FormField instance.
removeFieldByName(string $fieldName)
Removes an existing formfield instance by its name.
$this
setSearchParams(array|HTTPRequest $searchParams)
Set search param values
array
getSearchParams()
No description
ArrayData>
getSummary()
Gets a list of what fields were searched and the values provided for each field. Returns an ArrayList of ArrayData, suitable for rendering on a template.