SearchContext
class SearchContext (View source)
Manages searching of properties on one or more {@link 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 {@link SQLSelect} object for further refinement, or a {@link SS_List} that can be used to display search results, e.g. in a {@link TableListField} instance.
In case you need multiple contexts, consider namespacing your request parameters by using {@link 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 {@link DataObject->getDefaultSearchContext()} which is automatically scaffolded. It uses {@link DataObject::$searchable_fields} to determine which fields to include.
Traits
A class that can be instantiated or replaced via DI
Properties
string | $connective | The logical connective used to join WHERE clauses. Defaults to AND. |
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 scaffolded search fields for UI.
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.
Accessor for the filter attached to a named field.
Get the map of filters in the current search context.
Overwrite the current search context filter map.
Removes a filter by name.
Removes an existing formfield instance by its name.
No description
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(array ...$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'); $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(string $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 {@link self::$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.
DataList
getQuery(array $searchParams, array|bool|string $sort = false, array|bool|string $limit = false, DataList $existingQuery = null)
Returns a SQL object representing the search context for the given list of query parameters.
DataList
getResults(array $searchParams, array|bool|string $sort = false, array|bool|string $limit = false)
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
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(array $filters)
Overwrite the current search context filter map.
addFilter(SearchFilter $filter)
Adds a instance of {@link 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 {@link FormField} instance.
removeFieldByName(string $fieldName)
Removes an existing formfield instance by its name.
$this
setSearchParams(array|HTTPRequest $searchParams)
Set search param values
array
getSearchParams()
ArrayList
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.