Skip to content

Points d'extension du cœur

Page générée

Extraite mécaniquement du code de slab/framework (commande slab:extension-points). Dernière génération : 2026-08-18.

Le cœur (slab/framework) n'expose au reste de l'écosystème que des contrats. Les packages les implémentent, le frontend les consomme — personne ne dépend de personne d'autre que du cœur.

Contrats (39)

surchargeable : un défaut est lié dans le conteneur, remplaçable par binding. implémentable : pas de défaut, fourni par les packages.

ContratDomaineTypeImplémentation par défaut
AccessControlRegistryAccountsurchargeableDefaultAccessControlRegistry
BackMenuRegistryBackMenusurchargeableDefaultBackMenuRegistry
CancellableEventEventimplémentable(fourni par un package)
CartPriceServiceCartsurchargeableDefaultCartPriceService
CartServiceCartsurchargeableDefaultCartService
CatalogFilterRegistryCategorysurchargeableDefaultCatalogFilterRegistry
CategoryServiceCategorysurchargeableDefaultCategoryService
CheckoutOptionProviderCheckoutimplémentable(fourni par un package)
CheckoutOptionRegistryCheckoutsurchargeableDefaultCheckoutOptionRegistry
ConsentServiceConsentsurchargeableDefaultConsentService
CurrencyServiceCurrencysurchargeableDefaultCurrencyService
CurrentAreaResolverAreasurchargeableDefaultCurrentAreaResolver
CurrentCartResolverCartsurchargeableDefaultCurrentCartResolver
CurrentCurrencyResolverCurrencysurchargeableDefaultCurrentCurrencyResolver
DatatableExtensionRegistryViewsurchargeableDefaultDatatableExtensionRegistry
FormLayoutRegistryViewsurchargeableDefaultFormLayoutRegistry
FormRuleRegistryValidationsurchargeableDefaultFormRuleRegistry
LanguageServiceLanguagesurchargeableDefaultLanguageService
MenuServiceMenusurchargeableDefaultMenuService
ModelExtensionRegistryModelsurchargeableDefaultModelExtensionRegistry
OrderMailRegistryOrdersurchargeableDefaultOrderMailRegistry
OrderPlacementPipelineOrdersurchargeableDefaultOrderPlacementPipeline
OrderPriceServiceOrdersurchargeableDefaultOrderPriceService
OrderServiceOrdersurchargeableDefaultOrderService
OrderStatusServiceOrdersurchargeableDefaultOrderStatusService
PriceModifierPricingimplémentable(fourni par un package)
PriceModifierRegistryPricingsurchargeableDefaultPriceModifierRegistry
PricePipelinePricingsurchargeableDefaultPricePipeline
ProductIndexServiceProductsurchargeableDefaultProductIndexService
ProductPriceServiceProductsurchargeableDefaultProductPriceService
ProductVariantServiceProductsurchargeableDefaultProductVariantService
RouteContributionRegistrarRoutingsurchargeableDefaultRouteContributionRegistrar
SearchIndexRegistrySearchsurchargeableDefaultSearchIndexRegistry
TaxResolverTaxsurchargeableDefaultTaxResolver
TotalsBuilderPricingsurchargeableDefaultTotalsBuilder
TotalsModifierPricingimplémentable(fourni par un package)
TotalsModifierRegistryPricingsurchargeableDefaultTotalsModifierRegistry
TranslationServiceTranslationsurchargeableDefaultTranslationService
ViewHookRegistryViewsurchargeableDefaultViewHookRegistry

Événements de domaine (21)

Émis par le cœur, écoutés par les packages via des listeners. Ceux marqués annulables annoncent une intention avant qu'elle ne soit exécutée (CartItemAdding, OrderPlacing…) : un écouteur peut s'y opposer par $event->cancel('motif'), et l'action n'a pas lieu.

ÉvénementDomaineVeto
CartItemAddedCart
CartItemAddingCartannulable
CartItemRemovedCart
CartItemRemovingCartannulable
CartItemUpdatedCart
CartItemUpdatingCartannulable
CartMergedCart
CategoryViewedCategory
CheckoutCompletedCheckout
CheckoutStartedCheckout
CheckoutStepCompletedCheckout
CurrencyChangedCurrency
OrderPlacedOrder
OrderPlacingOrderannulable
OrderStatusChangedOrder
OrderStatusChangingOrderannulable
ProductViewedProduct
ReindexRequestedSearch
SearchPerformedSearch
UserEmailChangedAccount
UserRegisteredAccount

Noms de routes front garantis (32)

Le frontend garantit ces noms de routes front.* (contrat FrontRouteContract) ; un package ou un thème peut s'appuyer dessus sans coupler son code aux URLs.

home

  • front.home

catalog

  • front.products.show
  • front.products.ajax.get-variant-url
  • front.categories.show
  • front.categories.ajax.filters-count
  • front.pages.show
  • front.search.ajax.search

cart

  • front.carts.ajax.get-content
  • front.carts.ajax.product.add
  • front.carts.ajax.product.update
  • front.carts.ajax.product.delete

checkout

  • front.checkout.user.show
  • front.checkout.user.store
  • front.checkout.addresses.show
  • front.checkout.addresses.store
  • front.orders.confirmation

account

  • front.account.show
  • front.account.user.edit
  • front.account.user.update
  • front.account.addresses.index
  • front.account.addresses.create
  • front.account.addresses.store
  • front.account.addresses.edit
  • front.account.addresses.update
  • front.account.addresses.destroy
  • front.account.orders.index
  • front.account.orders.show
  • front.addresses.ajax.get-form
  • front.addresses.ajax.get-block

user

  • front.users.create
  • front.users.store
  • front.currency.set-current-currency

Slots front

Points d'insertion de vue exposés par le frontend (<x-hook>), remplis par les packages via le ViewHookRegistry. Un thème complet les expose tous ; le groupe mails est posé par le framework, qui possède les gabarits d'e-mail.

layout

  • front.head
  • front.body.start
  • front.body.end
  • front.main.start
  • front.main.end
  • front.header.start
  • front.header.end

catalog

  • front.product.summary.after
  • front.product.form.fields
  • front.product.after
  • front.category.filters.after
  • front.category.products.after
  • front.search.results.after

cart

  • front.cart.item.after
  • front.cart.totals.after
  • front.cart.actions

checkout

  • front.checkout.summary
  • front.checkout.step.start
  • front.checkout.step.end

account

  • front.account.links
  • front.order.details.after

forms

  • front.login.form.end
  • front.register.form.end
  • front.address.form.end

mails

  • mail.body.start
  • mail.body.end

Slots back-office

Mêmes points d'injection côté administration : ils existent sur tous les écrans, et un package y contribue son markup sans éditer une vue du cœur.

layout

  • back.head
  • back.body.start
  • back.body.end
  • back.main.start
  • back.main.end

chrome

  • back.header.corner
  • back.header.actions
  • back.menu.end

Hooks d'écran

Le point d'extension de vue le plus général : toute route nommée ouvre deux hooks, sans que sa vue ait à les déclarer. Un package cible ainsi n'importe quel écran — du cœur, du thème ou d'un autre package — et reçoit les paramètres de la route en contexte.

  • <route>.start
  • <route>.end

Exemples : back.products.index.start, front.products.show.end.

Les écrans de formulaire du back-office ouvrent en plus, via leur charpente déclarative (FormLayoutRegistry) :

  • {screen}.tabs
  • {screen}.sections
  • {screen}.tab.{tab}