SearchContext
class SearchContext
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
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
in Injectable at line 26
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();
in Injectable at line 43
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).
at line 95
__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.
at line 107
FieldList
getSearchFields()
Returns scaffolded search fields for UI.
at line 146
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.
at line 205
DataList
getResults(array $searchParams, array|bool|string $sort = false, array|bool|string $limit = false)
Returns a result set from the given search parameters.
at line 220
boolean
clearEmptySearchFields(mixed $value)
Callback map function to filter fields with empty values from being included in the search expression.
at line 231
SearchFilter
getFilter(string $name)
Accessor for the filter attached to a named field.
at line 245
SearchFilter[]
getFilters()
Get the map of filters in the current search context.
at line 255
setFilters(array $filters)
Overwrite the current search context filter map.
at line 265
addFilter(SearchFilter $filter)
Adds a instance of {@link SearchFilter}.
at line 275
removeFilterByName(string $name)
Removes a filter by name.
at line 285
FieldList
getFields()
Get the list of searchable fields in the current search context.
at line 295
setFields(FieldList $fields)
Apply a list of searchable fields to the current search context.
at line 305
addField(FormField $field)
Adds a new {@link FormField} instance.
at line 315
removeFieldByName(string $fieldName)
Removes an existing formfield instance by its name.
at line 326
$this
setSearchParams(array|HTTPRequest $searchParams)
Set search param values
at line 340
array
getSearchParams()
at line 352
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.