class FulltextSearchable extends Extension (View source)

Provides a simple search engine for your site based on the MySQL FULLTEXT index.

Adds the FulltextSearchable extension to data classes, as well as the ContentControllerSearchExtension} to {@link ContentController (if the 'cms' module is available as well). (this means you can use $SearchForm in your template without changing your own implementation).

CAUTION: Will make all files in your /assets folder searchable by file name unless "File" is excluded from FulltextSearchable::enable().

Properties

protected T $owner

The object this extension is applied to.

from  Extension
protected string $searchFields

Comma-separated list of database column names that can be searched on. Used for generation of the database index definitions.

protected static array $searchable_classes

Methods

public
__construct(array|string $searchFields = [])

No description

public static 
add_to_class(string $class, string $extensionClass, mixed $args = null)

Called when this extension is added to a particular class

public
setOwner(object $owner)

Set the owner of this extension.

public
mixed
withOwner(mixed $owner, callable $callback, array $args = [])

Temporarily modify the owner. The original owner is ensured to be restored

public
clearOwner()

Clear the current owner, and restore extension to the state prior to the last setOwner()

public
T
getOwner()

Returns the owner of this extension.

public static 
string
get_classname_without_arguments(string $extensionStr)

Helper method to strip eval'ed arguments from a string that's passed to DataObject::$extensions or Object::add_extension().

public
mixed
invokeExtension(object $owner, string $method, array ...$arguments)

Invoke extension point. This will prefer explicit extend prefixed methods.

public static 
enable(array $searchableClasses = [SiteTree::class, File::class])

Enable the default configuration of MySQL full-text searching on the given data classes.

public static 
get_extra_config($class, $extensionClass, $args)

No description

public static 
array
get_searchable_classes()

Shows all classes that had the FulltextSearchable} extension applied through {@link enable().

Details

__construct(array|string $searchFields = [])

No description

Parameters

array|string $searchFields

Comma-separated list (or array) of database column names that can be searched on. Used for generation of the database index definitions.

static add_to_class(string $class, string $extensionClass, mixed $args = null)

Called when this extension is added to a particular class

Parameters

string $class
string $extensionClass
mixed $args

setOwner(object $owner)

Set the owner of this extension.

Parameters

object $owner

The owner object

mixed withOwner(mixed $owner, callable $callback, array $args = [])

Temporarily modify the owner. The original owner is ensured to be restored

Parameters

mixed $owner

Owner to set

callable $callback

Callback to invoke

array $args

Args to pass to callback

Return Value

mixed

clearOwner()

Clear the current owner, and restore extension to the state prior to the last setOwner()

T getOwner()

Returns the owner of this extension.

Return Value

T

static string get_classname_without_arguments(string $extensionStr)

Helper method to strip eval'ed arguments from a string that's passed to DataObject::$extensions or Object::add_extension().

Parameters

string $extensionStr

E.g. "Versioned('Stage','Live')"

Return Value

string

Extension classname, e.g. "Versioned"

mixed invokeExtension(object $owner, string $method, array ...$arguments)

Invoke extension point. This will prefer explicit extend prefixed methods.

Parameters

object $owner
string $method
array ...$arguments

Return Value

mixed

static enable(array $searchableClasses = [SiteTree::class, File::class])

Enable the default configuration of MySQL full-text searching on the given data classes.

It can be used to limit the searched classes, but not to add your own classes. For this purpose, please use Object::add_extension() directly:

MyObject::add_extension("FulltextSearchable('MySearchableField,MyOtherField')");

Caution: This is a wrapper method that should only be used in _config.php, and only be called once in your code.

Parameters

array $searchableClasses

The extension will be applied to all DataObject subclasses listed here. Default: SiteTree} and {@link File.

Exceptions

Exception

static get_extra_config($class, $extensionClass, $args)

No description

Parameters

$class
$extensionClass
$args

static array get_searchable_classes()

Shows all classes that had the FulltextSearchable} extension applied through {@link enable().

Return Value

array