Apparence
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.
| Contrat | Domaine | Type | Implémentation par défaut |
|---|---|---|---|
AccessControlRegistry | Account | surchargeable | DefaultAccessControlRegistry |
BackMenuRegistry | BackMenu | surchargeable | DefaultBackMenuRegistry |
CancellableEvent | Event | implémentable | — (fourni par un package) |
CartPriceService | Cart | surchargeable | DefaultCartPriceService |
CartService | Cart | surchargeable | DefaultCartService |
CatalogFilterRegistry | Category | surchargeable | DefaultCatalogFilterRegistry |
CategoryService | Category | surchargeable | DefaultCategoryService |
CheckoutOptionProvider | Checkout | implémentable | — (fourni par un package) |
CheckoutOptionRegistry | Checkout | surchargeable | DefaultCheckoutOptionRegistry |
ConsentService | Consent | surchargeable | DefaultConsentService |
CurrencyService | Currency | surchargeable | DefaultCurrencyService |
CurrentAreaResolver | Area | surchargeable | DefaultCurrentAreaResolver |
CurrentCartResolver | Cart | surchargeable | DefaultCurrentCartResolver |
CurrentCurrencyResolver | Currency | surchargeable | DefaultCurrentCurrencyResolver |
DatatableExtensionRegistry | View | surchargeable | DefaultDatatableExtensionRegistry |
FormLayoutRegistry | View | surchargeable | DefaultFormLayoutRegistry |
FormRuleRegistry | Validation | surchargeable | DefaultFormRuleRegistry |
LanguageService | Language | surchargeable | DefaultLanguageService |
MenuService | Menu | surchargeable | DefaultMenuService |
ModelExtensionRegistry | Model | surchargeable | DefaultModelExtensionRegistry |
OrderMailRegistry | Order | surchargeable | DefaultOrderMailRegistry |
OrderPlacementPipeline | Order | surchargeable | DefaultOrderPlacementPipeline |
OrderPriceService | Order | surchargeable | DefaultOrderPriceService |
OrderService | Order | surchargeable | DefaultOrderService |
OrderStatusService | Order | surchargeable | DefaultOrderStatusService |
PriceModifier | Pricing | implémentable | — (fourni par un package) |
PriceModifierRegistry | Pricing | surchargeable | DefaultPriceModifierRegistry |
PricePipeline | Pricing | surchargeable | DefaultPricePipeline |
ProductIndexService | Product | surchargeable | DefaultProductIndexService |
ProductPriceService | Product | surchargeable | DefaultProductPriceService |
ProductVariantService | Product | surchargeable | DefaultProductVariantService |
RouteContributionRegistrar | Routing | surchargeable | DefaultRouteContributionRegistrar |
SearchIndexRegistry | Search | surchargeable | DefaultSearchIndexRegistry |
TaxResolver | Tax | surchargeable | DefaultTaxResolver |
TotalsBuilder | Pricing | surchargeable | DefaultTotalsBuilder |
TotalsModifier | Pricing | implémentable | — (fourni par un package) |
TotalsModifierRegistry | Pricing | surchargeable | DefaultTotalsModifierRegistry |
TranslationService | Translation | surchargeable | DefaultTranslationService |
ViewHookRegistry | View | surchargeable | DefaultViewHookRegistry |
É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énement | Domaine | Veto |
|---|---|---|
CartItemAdded | Cart | — |
CartItemAdding | Cart | annulable |
CartItemRemoved | Cart | — |
CartItemRemoving | Cart | annulable |
CartItemUpdated | Cart | — |
CartItemUpdating | Cart | annulable |
CartMerged | Cart | — |
CategoryViewed | Category | — |
CheckoutCompleted | Checkout | — |
CheckoutStarted | Checkout | — |
CheckoutStepCompleted | Checkout | — |
CurrencyChanged | Currency | — |
OrderPlaced | Order | — |
OrderPlacing | Order | annulable |
OrderStatusChanged | Order | — |
OrderStatusChanging | Order | annulable |
ProductViewed | Product | — |
ReindexRequested | Search | — |
SearchPerformed | Search | — |
UserEmailChanged | Account | — |
UserRegistered | Account | — |
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.showfront.products.ajax.get-variant-urlfront.categories.showfront.categories.ajax.filters-countfront.pages.showfront.search.ajax.search
cart
front.carts.ajax.get-contentfront.carts.ajax.product.addfront.carts.ajax.product.updatefront.carts.ajax.product.delete
checkout
front.checkout.user.showfront.checkout.user.storefront.checkout.addresses.showfront.checkout.addresses.storefront.orders.confirmation
account
front.account.showfront.account.user.editfront.account.user.updatefront.account.addresses.indexfront.account.addresses.createfront.account.addresses.storefront.account.addresses.editfront.account.addresses.updatefront.account.addresses.destroyfront.account.orders.indexfront.account.orders.showfront.addresses.ajax.get-formfront.addresses.ajax.get-block
user
front.users.createfront.users.storefront.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.headfront.body.startfront.body.endfront.main.startfront.main.end
header
front.header.startfront.header.end
catalog
front.product.summary.afterfront.product.form.fieldsfront.product.afterfront.category.filters.afterfront.category.products.afterfront.search.results.after
cart
front.cart.item.afterfront.cart.totals.afterfront.cart.actions
checkout
front.checkout.summaryfront.checkout.step.startfront.checkout.step.end
account
front.account.linksfront.order.details.after
forms
front.login.form.endfront.register.form.endfront.address.form.end
mails
mail.body.startmail.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.headback.body.startback.body.endback.main.startback.main.end
chrome
back.header.cornerback.header.actionsback.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}