<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
silverstripe / silverstripe-discoverer-search-ui example snippets
namespace App\Extensions;
use SilverStripe\DiscovererSearchUI\Extension\SearchResultsExtension;
class SearchExtension extends SearchResultsExtension
{
}
class SearchExtension extends SearchResultsExtension
{
public function updateSearchQuery(Query $query, HTTPRequest $request): void
{
// A filter called "topic" that we added to our search form
$topic = $request->getVar('topic') ?: null;
// Title field to be limited to 200 chars, and formatted (snippets)
$query->addResultField('title', 200, true);
// Content field to be limited to 400 chars, and formatted (snippets)
$query->addResultField('content', 400, true);
// Body field to be limited to 400 chars, and formatted (snippets)
$query->addResultField('body', 400, true);
// The link to the Page or File
$query->addResultField('link');
// Apply our topics filter (if any were provided)
if ($topic) {
$query->filter('topic_id', $topic, Criterion::EQUAL);
}
}
}
class SearchExtension extends SearchResultsExtension
{
public function updateSearchFieldLists(FieldList $fields, FieldList $actions, HTTPRequest $request): void
{
// If the form has previously been submitted, see if a topic was specified
$topic = $request->getVar('topic') ?: null;
// A filter called "topics" that we want to add to our search form
$topics = DropdownField::create(
'topic',
'Topic',
[
1 => 'Transformers',
2 => 'Star Wars',
3 => 'Star Trek',
]
)
->setEmptyString('select one')
// Set the previously submitted value to this field
->setValue($topic);
$fields->add($topics);
}
}
class SearchExtension extends SearchResultsExtension
{
public function updateSearchForm(Form $form, HTTPRequest $request): void
{
// For example, disabling the CSRF token?
$form->disableSecurityToken();
}
}