BaseBreadcrumb
extends BaseComponent
in package
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
- $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.
- buildItems() : array<string|int, BreadcrumbItemDTO>
- Extension hook; the default implementation returns only the page trail.
- 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).
- initializeRender() : void
- targetPresenterExists() : bool
- Returns whether the target presenter (in the `Module:Presenter` form) exists.
Properties
$container
public
Container
$container
Attributes
- #[Inject]
$routerDispatcher
public
RouterDispatcher
$routerDispatcher
$translator
public
ITranslator
$translator
Tags
$appContext
protected
AppContext
$appContext
$componentParameters
protected
array<string, mixed>
$componentParameters
= []
component parameters set by setComponentParameter()
$currencyContext
protected
CurrencyContext|null
$currencyContext
= NULL
$deviceDetector
protected
DeviceDetector|null
$deviceDetector
= NULL
$languageContext
protected
LanguageContext|null
$languageContext
= NULL
$localizationContext
protected
LocalizationContext|null
$localizationContext
= NULL
$pageManager read-only
protected
PageManager
$pageManager
$settingContext
protected
SettingContext
$settingContext
$themeContext
protected
ThemeContext|null
$themeContext
= NULL
$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>
__construct()
public
__construct(PageManager $pageManager) : mixed
Parameters
- $pageManager : PageManager
createComponent()
public
createComponent(string $name) : IComponent|null
Parameters
- $name : string
Return values
IComponent|nullgetAppContext()
public
getAppContext() : AppContext
Return values
AppContextgetComponentParameter()
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
ContainergetCurrencyContext()
public
getCurrencyContext() : CurrencyContext|null
Return values
CurrencyContext|nullgetLanguageContext()
public
getLanguageContext() : LanguageContext|null
Return values
LanguageContext|nullgetLocalizationContext()
public
getLocalizationContext() : LocalizationContext|null
Return values
LocalizationContext|nullgetRouterDispatcher()
public
getRouterDispatcher() : RouterDispatcher
Return values
RouterDispatchergetSettingContext()
public
getSettingContext() : SettingContext
Return values
SettingContextgetSettings()
public
getSettings() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>getThemeContext()
public
getThemeContext() : ThemeContext|null
Return values
ThemeContext|nullhasServiceByType()
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
Return values
boolinitializeAllContexts()
public
initializeAllContexts() : void
injectDeviceDetector()
public
injectDeviceDetector(DeviceDetector $detector) : void
Parameters
- $detector : DeviceDetector
onCreate()
public
onCreate() : void
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'
setAppContext()
public
setAppContext(AppContext $appContext) : $this
Parameters
- $appContext : AppContext
Return values
$thissetComponentParameter()
Sets a component parameter.
public
setComponentParameter(string $name, mixed $value) : void
Parameters
- $name : string
- $value : mixed
setCurrencyContext()
public
setCurrencyContext(CurrencyContext|null $currencyContext) : $this
Parameters
- $currencyContext : CurrencyContext|null
Return values
$thissetLanguageContext()
public
setLanguageContext(LanguageContext|null $languageContext) : $this
Parameters
- $languageContext : LanguageContext|null
Return values
$thissetLocalizationContext()
public
setLocalizationContext(LocalizationContext|null $localizationContext) : $this
Parameters
- $localizationContext : LocalizationContext|null
Return values
$thissetSettingContext()
public
setSettingContext(SettingContext $settingContext) : $this
Parameters
- $settingContext : SettingContext
Return values
$thissetThemeContext()
public
setThemeContext(ThemeContext|null $themeContext) : $this
Parameters
- $themeContext : ThemeContext|null
Return values
$thissetup()
public
setup(BasePresenter|BasePresenter $presenter) : void
Parameters
- $presenter : BasePresenter|BasePresenter
setupAppContext()
public
setupAppContext(AppContext $appContext) : void
Parameters
- $appContext : AppContext
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
Return values
TbuildItems()
Extension hook; the default implementation returns only the page trail.
protected
buildItems() : array<string|int, BreadcrumbItemDTO>
Children (BazaarBreadcrumb, BlogBreadcrumb, ...) override it and call
parent::buildItems().
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|nullfrontPresenter()
Returns the front presenter the component is attached to (null outside the front end or when detached).
protected
frontPresenter() : BasePresenter|null
Return values
BasePresenter|nullgetTemplateDir()
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
stringgetTranslator()
protected
getTranslator() : ITranslator
Return values
ITranslatorpopCurrentPage()
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
selfcreateMultiplierComponent()
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|nullcreateStandardComponent()
Creates a standard component (not a multiplier).
private
createStandardComponent(string $name) : IComponent|null
Parameters
- $name : string
Return values
IComponent|nullinitializeRender()
private
initializeRender() : void
targetPresenterExists()
Returns whether the target presenter (in the `Module:Presenter` form) exists.
private
targetPresenterExists(string $name) : bool
Builds the class name from the mapping and checks the class without calling
link(), so no warning or Tracy bar can be triggered.
Parameters
- $name : string