Traits

Site API comes with several traits that will help you minimize the amount of boilerplate code.

PagerfantaTrait

This trait provides methods to obtain Pagerfanta pager instance using FilterService or FindService directly from the given Query object.

FQN

Netgen\IbexaSiteApi\Core\Traits\PagerfantaTrait

Note

Abstract controller from Site API already uses this trait.

The trait provides two methods for creating a Pagerfanta instance:

getFilterPager()

This method will return Pagerfanta instance which will use FilterService to load its items. Content or Location search will be used depending on the provided $query parameter instance.

Parameters

  1. Ibexa\Contracts\Core\Repository\Values\Content\Query $query

  2. int $currentPage

  3. int $maxPerPage

Returns

An instance of Pagerfanta\Pagerfanta

Example

use Ibexa\Contracts\Core\Repository\Values\Content\Query;

use Netgen\IbexaSiteApi\Core\Traits\PagerfantaTrait;

$query = new Query();

$pager = $this->getFilterPager($query, 1, 10);

getFindPager()

This method will return Pagerfanta instance which will use FindService to load its items. Content or Location search will be used depending on the provided $query parameter instance.

Parameters

  1. Ibexa\Contracts\Core\Repository\Values\Content\Query $query

  2. int $currentPage

  3. int $maxPerPage

Returns

An instance of Pagerfanta\Pagerfanta

Example

use Ibexa\Contracts\Core\Repository\Values\Content\Query;

use Netgen\IbexaSiteApi\Core\Traits\PagerfantaTrait;

$query = new Query();

$pager = $this->getFindPager($query, 1, 10);

SearchResultExtractorTrait

This trait provides methods to extract type hinted value objects from the given SearchResult object.

Note

Abstract controller from Site API already uses this trait.

FQN

Netgen\IbexaSiteApi\Core\Traits\SearchResultExtractorTrait

The trait provides three methods for extracting value objects:

extractContentItems()

This method will extract Content items from the given SearchResult.

Parameters

  1. Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult $searchResult

Returns

An array of Content items

Example

use Netgen\IbexaSiteApi\Core\Traits\SearchResultExtractorTrait;

/** @var $searchResult \Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult */

$contentItems = $this->extractContentItems($searchResult);

extractLocations()

This method will extract Locations from the given SearchResult.

Parameters

  1. Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult $searchResult

Returns

An array of Locations

Example

use Netgen\IbexaSiteApi\Core\Traits\SearchResultExtractorTrait;

/** @var $searchResult \Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult */

$locations = $this->extractLocations($searchResult);

extractValueObjects()

This method will extract value objects from the given SearchResult. The generic value object is not useful for type hinting, as it’s already hinted in the SearchResult, but it enables you to avoid writing the code yourself.

Parameters

  1. Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult $searchResult

Returns

An array of Ibexa\Contracts\Core\Repository\Values\ValueObject instances

Example

use Netgen\IbexaSiteApi\Core\Traits\SearchResultExtractorTrait;

/** @var $searchResult \Ibexa\Contracts\Core\Repository\Values\Content\Search\SearchResult */

$valueObjects = $this->extractValueObjects($searchResult);

SiteAwareTrait

FQN

Netgen\IbexaSiteApi\Core\Traits\SiteAwareTrait

This trait provides setter injection of the Site object in your service. It provides methods for setting and getting the Site instance:

setSite()

Parameters

  1. Netgen\IbexaSiteApi\API\Site $site

Returns

Void

getSite()

Parameters

None

Parameters

An instance of Netgen\IbexaSiteApi\API\Site