CoolCMS API

Breadcrumb extends BaseBreadcrumb
in package
uses CategoryTrailTrait, MessageTrailTrait

FinalYes

Shared parent of the breadcrumb components.

Holds the page trail logic (nested set from PageManager). The module components (System, Bazaar, Blog, Discussion, Comcat) extend it and override buildItems() to append their own trail (category, advert, ...).

The class is abstract so that DI search does not register it as a service; otherwise the leaf component types would stop being unambiguous for getByType().

Table of Contents

Properties

$container  : Container
$routerDispatcher  : RouterDispatcher
$translator  : ITranslator
$appContext  : AppContext
$categoryManager  : CategoryManager
$componentParameters  : array<string, mixed>
$currencyContext  : CurrencyContext|null
$deviceDetector  : DeviceDetector|null
$languageContext  : LanguageContext|null
$localizationContext  : LocalizationContext|null
$pageManager  : PageManager
$settingContext  : SettingContext
$themeContext  : ThemeContext|null
$translatorDomain  : string|null

Methods

__call()  : mixed
Dispatches `renderXyz()` to `render('Xyz', ...$args)`.
__construct()  : mixed
createComponent()  : IComponent|null
getAppContext()  : AppContext
getComponentParameter()  : mixed
Returns a component parameter, or null when it is not set.
getContainer()  : Container
getCurrencyContext()  : CurrencyContext|null
getLanguageContext()  : LanguageContext|null
getLocalizationContext()  : LocalizationContext|null
getRouterDispatcher()  : RouterDispatcher
getSettingContext()  : SettingContext
getSettings()  : array<int, array<string, mixed>>
getThemeContext()  : ThemeContext|null
hasServiceByType()  : bool
Returns whether the container has a service of the given type.
initializeAllContexts()  : void
injectDeviceDetector()  : void
onCreate()  : void
render()  : void
Renders the breadcrumb in the given visual style.
setAppContext()  : $this
setComponentParameter()  : void
Sets a component parameter.
setCurrencyContext()  : $this
setLanguageContext()  : $this
setLocalizationContext()  : $this
setSettingContext()  : $this
setThemeContext()  : $this
setup()  : void
setupAppContext()  : void
typedComponent()  : T
Returns a subcomponent with a verified type.
buildCategoryTrail()  : array<string|int, BreadcrumbItemDTO>
Builds the trail for a category from the nested set (`lft`/`rgt`): root to the current category.
buildCategoryUrl()  : string|null
buildItems()  : array<string|int, BreadcrumbItemDTO>
Discussion-specific extension of the trail: - `MessagePresenter::list`: page trail plus category trail.
buildMessageTrail()  : array<string|int, BreadcrumbItemDTO>
Builds the trail for a message: its category trail plus the message subject as the active item.
buildPageTrail()  : array<string|int, BreadcrumbItemDTO>
Builds the trail for the current page from the nested set (`lft`/`rgt`).
buildPageUrl()  : string|null
Builds the page URL from its first route, `slug` set to the page id and the other URL parameters taken from `getDefaultUrlParams()`.
frontPresenter()  : BasePresenter|null
Returns the front presenter the component is attached to (null outside the front end or when detached).
getTemplateDir()  : string
Returns the root directory for template lookup (the theme is then resolved by `BaseComponent::setTemplateFile()`).
getTranslator()  : ITranslator
popCurrentPage()  : array<string|int, BreadcrumbItemDTO>
Removes the last trail item (the current page).
setTemplateFile()  : void
setTranslator()  : self
createMultiplierComponent()  : Multiplier<string|int, IComponent>
Creates a multiplier for the component.
createNewComponentInstance()  : IComponent|null
Creates a new component instance without adding it to the presenter; used by the multiplier.
createStandardComponent()  : IComponent|null
Creates a standard component (not a multiplier).

Properties

$componentParameters

protected array<string, mixed> $componentParameters = []

component parameters set by setComponentParameter()

$translatorDomain

protected string|null $translatorDomain = 'front.system.components.breadcrumb'

Methods

__call()

Dispatches `renderXyz()` to `render('Xyz', ...$args)`.

public __call(string $name, array<string|int, mixed> $args) : mixed

Called only when the component has no renderXyz() method of its own.

Parameters
$name : string
$args : array<string|int, mixed>

createComponent()

public createComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null

getComponentParameter()

Returns a component parameter, or null when it is not set.

public getComponentParameter(string $name) : mixed
Parameters
$name : string

getContainer()

public getContainer() : Container
Return values
Container

getSettings()

public getSettings() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>

hasServiceByType()

Returns whether the container has a service of the given type.

public hasServiceByType(string $className) : bool

The name is composed dynamically (module plus component), so class_exists() runs first, and a true result guarantees a valid type.

Parameters
$className : string
Tags
phpstan-assert-if-true

class-string $className

Return values
bool

render()

Renders the breadcrumb in the given visual style.

public render([string $style = 'Arrow' ]) : void

The style templates (Templates/Default/) are shared by all modules so that the breadcrumb looks the same across the website:

  • Arrow: quiet path with chevrons (default).
  • Pills: segmented strip with a chevron between the pills.
  • PillsPlain: pill only for the current page, the rest are plain links.
  • Back: "back to ..." link plus the rest of the path as secondary text.

Usage: {control frontBazaarBreadcrumb} or {control frontBazaarBreadcrumb:pills}.

Parameters
$style : string = 'Arrow'

setComponentParameter()

Sets a component parameter.

public setComponentParameter(string $name, mixed $value) : void
Parameters
$name : string
$value : mixed

typedComponent()

Returns a subcomponent with a verified type.

public typedComponent(string $name, T> $type) : T

Use it instead of an inline @var above $this['x'] (which does not narrow the type) and instead of the generic IComponent that $this['x'] returns. See Form::typedComponent().

Parameters
$name : string
$type : T>
Tags
template
Return values
T

buildCategoryTrail()

Builds the trail for a category from the nested set (`lft`/`rgt`): root to the current category.

protected buildCategoryTrail(Category|null $currentCategory[, bool $intermediate = false ]) : array<string|int, BreadcrumbItemDTO>
Parameters
$currentCategory : Category|null
$intermediate : bool = false
Return values
array<string|int, BreadcrumbItemDTO>

buildItems()

Discussion-specific extension of the trail: - `MessagePresenter::list`: page trail plus category trail.

protected buildItems() : array<string|int, BreadcrumbItemDTO>
  • MessagePresenter::detail: page trail plus category trail plus the message subject.
  • Other actions: keeps the parent page trail.
Return values
array<string|int, BreadcrumbItemDTO>

buildMessageTrail()

Builds the trail for a message: its category trail plus the message subject as the active item.

protected buildMessageTrail(Message|null $message) : array<string|int, BreadcrumbItemDTO>

The class must also use CategoryTrailTrait.

Parameters
$message : Message|null
Return values
array<string|int, BreadcrumbItemDTO>

buildPageTrail()

Builds the trail for the current page from the nested set (`lft`/`rgt`).

protected buildPageTrail(Page|null $currentPage) : array<string|int, BreadcrumbItemDTO>

Children call it through parent::buildItems().

Parameters
$currentPage : Page|null
Return values
array<string|int, BreadcrumbItemDTO>

buildPageUrl()

Builds the page URL from its first route, `slug` set to the page id and the other URL parameters taken from `getDefaultUrlParams()`.

protected buildPageUrl(Page $page) : string|null

Returns null when the page has no route or the target presenter does not exist.

Parameters
$page : Page
Return values
string|null

frontPresenter()

Returns the front presenter the component is attached to (null outside the front end or when detached).

protected frontPresenter() : BasePresenter|null
Return values
BasePresenter|null

getTemplateDir()

Returns the root directory for template lookup (the theme is then resolved by `BaseComponent::setTemplateFile()`).

protected getTemplateDir() : string

The default is the directory of this parent, so all modules share one set of styles. A child that needs its own look returns its __DIR__ and ships its own Templates/Default/; do that only when the module really must differ, otherwise the breadcrumbs drift apart across modules.

Return values
string

getTranslator()

protected getTranslator() : ITranslator
Return values
ITranslator

popCurrentPage()

Removes the last trail item (the current page).

protected popCurrentPage(array<string|int, BreadcrumbItemDTO> $items) : array<string|int, BreadcrumbItemDTO>

A child calls it right before appending its own trail; otherwise a page such as the advert detail or the article list would appear in the middle of the path.

Parameters
$items : array<string|int, BreadcrumbItemDTO>
Return values
array<string|int, BreadcrumbItemDTO>

setTemplateFile()

protected setTemplateFile(string $dir, string $filename) : void
Parameters
$dir : string
$filename : string

setTranslator()

protected setTranslator(ITranslator $translator) : self
Parameters
$translator : ITranslator
Return values
self

createMultiplierComponent()

Creates a multiplier for the component.

private createMultiplierComponent(string $name) : Multiplier<string|int, IComponent>
Parameters
$name : string
Return values
Multiplier<string|int, IComponent>

createNewComponentInstance()

Creates a new component instance without adding it to the presenter; used by the multiplier.

private createNewComponentInstance(string $baseName[, int|string|null $uniqueKey = null ]) : IComponent|null
Parameters
$baseName : string
$uniqueKey : int|string|null = null
Return values
IComponent|null

createStandardComponent()

Creates a standard component (not a multiplier).

private createStandardComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null
On this page

Search results