GridFieldAddExistingAutocompleter
class GridFieldAddExistingAutocompleter extends AbstractGridFieldComponent implements GridField_HTMLProvider, GridField_ActionProvider, GridField_DataManipulator, GridField_URLHandler (View source)
This class is is responsible for adding objects to another object's has_many and many_many relation, as defined by the RelationList passed to the GridField constructor.
Objects can be searched through an input field (partially matching one or more fields).
Selecting from the results will add the object to the relation.
Often used alongside GridFieldDeleteAction for detaching existing records from a relationship.
For easier setup, have a look at a sample configuration in GridFieldConfig_RelationEditor.
The modelClass of the GridField this component is in must be a DataObject subclass.
Traits
A class that can be instantiated or replaced via DI
Properties
protected | $targetFragment | The HTML fragment to write this component into |
||
protected | SS_List | $searchList | ||
protected | array | $searchFields | Define column names which should be included in the search. |
|
protected | string | $resultsFormat | ||
protected | string | $placeholderText | ||
protected | int | $resultsLimit |
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.
Manipulate the state to add a new relation
If an object ID is set, add the object to the list
Returns a json array of a search results that can be used by for example Jquery.ui.autosuggestion
Sets the base list instance which will be used for the autocomplete search.
Detect searchable fields and searchable relations.
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(string $targetFragment = 'before', array $searchFields = null)
No description
array
getHTMLFragments(GridField $gridField)
No description
array
getActions(GridField $gridField)
No description
handleAction(GridField $gridField, string $actionName, array $arguments, array $data)
Manipulate the state to add a new relation
SS_List
getManipulatedData(GridField $gridField, SS_List $dataList)
If an object ID is set, add the object to the list
array
getURLHandlers(GridField $gridField)
No description
string
doSearch(GridField $gridField, HTTPRequest $request)
Returns a json array of a search results that can be used by for example Jquery.ui.autosuggestion
$this
setResultsFormat(string $format)
No description
string
getResultsFormat()
No description
setSearchList(SS_List $list)
Sets the base list instance which will be used for the autocomplete search.
$this
setSearchFields(array $fields)
No description
array
getSearchFields()
No description
array|null
scaffoldSearchFields(string $dataClass)
Detect searchable fields and searchable relations.
Falls back to DataObject->summaryFields() if no custom search fields are defined.
string
getPlaceholderText(string $dataClass)
No description
$this
setPlaceholderText(string $text)
No description
int
getResultsLimit()
Gets the maximum number of autocomplete results to display.
$this
setResultsLimit(int $limit)
No description