public function SearchApiPageController::page in Search API Pages 8
Page callback.
Parameters
\Symfony\Component\HttpFoundation\Request $request: The request.
string $search_api_page_name: The search api page name.
string $keys: The search word.
Return value
array The page render array.
Throws
\Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
\Drupal\Component\Plugin\Exception\PluginException
\Drupal\Component\Plugin\Exception\PluginNotFoundException
\Drupal\search_api\SearchApiException
File
- src/Controller/ SearchApiPageController.php, line 78 
Class
- SearchApiPageController
- Defines a controller to serve search pages.
Namespace
Drupal\search_api_page\ControllerCode
public function page(Request $request, $search_api_page_name, $keys = '') {
  /* @var $search_api_page \Drupal\search_api_page\SearchApiPageInterface */
  $search_api_page = $this
    ->entityTypeManager()
    ->getStorage('search_api_page')
    ->load($search_api_page_name);
  // Keys can be in the query.
  if (!$search_api_page
    ->getCleanUrl()) {
    $keys = $request
      ->get('keys');
  }
  $build['#theme'] = 'search_api_page';
  if ($search_api_page
    ->showSearchForm()) {
    $build = $this
      ->addSearchForm($build, $search_api_page, $keys);
  }
  if (empty($keys) && !$search_api_page
    ->showAllResultsWhenNoSearchIsPerformed()) {
    return $this
      ->finishBuild($build, $search_api_page);
  }
  $query = $this
    ->prepareQuery($request, $search_api_page);
  if (!empty($keys)) {
    $query
      ->keys($keys);
  }
  $result = $query
    ->execute();
  /* @var $items \Drupal\search_api\Item\ItemInterface[] */
  $items = $result
    ->getResultItems();
  $results = [];
  foreach ($items as $item) {
    $rendered = $this
      ->createItemRenderArray($item, $search_api_page);
    if ($rendered === []) {
      continue;
    }
    $results[] = $rendered;
  }
  if (empty($results)) {
    return $this
      ->finishBuildWithoutResults($build, $search_api_page);
  }
  return $this
    ->finishBuildWithResults($build, $result, $results, $search_api_page);
}