Support (routing, chrome, dynamic pages)

Sample documentation (demo only)
This is an incomplete, outdated docs snapshot shipped with the playground — screenshots were removed on purpose.
For the full, current manuals go to voodflow.com/docs.

Voodflow\Voodbuilder\Support\ChromeLayoutRenderer

  • File: Support/ChromeLayoutRenderer.php
  • Kind: class
  • Responsibility: Splits a chrome layout around the content slot and hydrates menus/branding.

Methods

  • public function render(ChromeLayout $layout, bool $canvasPreview = false): array
    • Render stored markup for the current context.
  • public function splitAroundContentSlot(string $html): array
    • Split Around Content Slot.
  • protected function loadDocument(string $html): DOMDocument
    • Load Document.
  • protected function findContentSlot(DOMDocument $document): ?DOMElement
    • Find Content Slot.

Voodflow\Voodbuilder\Support\ChromeLayoutResolver

  • File: Support/ChromeLayoutResolver.php
  • Kind: class
  • Responsibility: Resolves Editor chrome layouts (header/footer shell) per content channel.

Methods

  • public static function enabled(): bool
    • Enabled.
  • public static function activeLayout(): ?ChromeLayout
    • Active Layout.
  • public static function resolveForChannel(?string $channelId): ?ChromeLayout
    • Resolve For Channel.
  • public static function forgetCache(?string $channelId = null): void
    • Performs forgetCache side effects.
  • protected static function tableExists(): bool
    • Table Exists.
  • public static function peerChannelIds(string $channelId): array
    • Peer Channel Ids.
  • protected static function resolveLayoutIdForChannel(?string $channelId): ?string
    • Resolve Layout Id For Channel.
  • protected static function firstSpecificLayoutForChannel($layouts, string $channelId): ?ChromeLayout
    • First Specific Layout For Channel.

Voodflow\Voodbuilder\Support\ContentChannelRegistry

  • File: Support/ContentChannelRegistry.php
  • Kind: class
  • Responsibility: Content Channel Registry.

Methods

  • public function bootFromConfig(): void
    • Performs bootFromConfig side effects.
  • public function registerFromArray(string $id, array $definition): self
    • Register From Array.
  • public function register(PublicContentChannel $channel): self
    • Register routes, blocks, channels, and bindings for this module.
  • public function has(string $id): bool
    • Boolean predicate has.
  • public function get(string $id): ?PublicContentChannel
    • Get.
  • public function all(): array
    • All.
  • public function matchesCurrentRequest(): ?PublicContentChannel
    • Matches Current Request.
  • public function search(string $term, int $limitPerChannel = 20): array
    • Search.

Voodflow\Voodbuilder\Support\DynamicPages\AbstractDynamicPageProvider

  • File: Support/DynamicPages/AbstractDynamicPageProvider.php
  • Kind: class
  • Implements: DynamicPageProvider
  • Responsibility: Base dynamic page provider with safe defaults for optional contract methods.

Methods

  • public function channelId(): string
    • Content-channel id this provider owns.
  • public function channelLabel(): string
    • Admin label for the dynamic-page channel.
  • public function claimableRoutes(): array
    • Laravel route names this provider can claim → admin labels.
  • public function entityKeys(): array
    • Keys in the entity bag passed to DynamicPageResolver.
  • public function currentBindingSourceId(): string
    • Binding source id for this channel’s .current context.
  • public function normalizeRouteName(string $routeName): string
    • Map a matched route name to the logical claimable key.
  • public function previewUrl(?SitePage $page = null): ?string
    • Example public URL for Filament / editor preview.
  • public function previewEntities(?SitePage $page = null): array
    • Sample entities when no request context is bound.
  • public function resolveRouteEntitiesFromSlugs(array $slugs): array
    • Resolve Route Entities From Slugs.
  • public function editorRouteEntityPatterns(): array
    • Editor Route Entity Patterns.
  • protected function routePatternsForPrefix(string $prefix, array $entityKeys): array
    • Build editor pathname patterns for /{prefix}/{slug} and optional /events/{event}.
  • protected function singleSlugPatternsForPrefix(string $prefix, string $entityKey): array
    • Single-segment slug pattern (e.g. /events/{event}).

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPageBindingCatalog

  • File: Support/DynamicPages/DynamicPageBindingCatalog.php
  • Kind: class
  • Responsibility: Maps dynamic SitePage channels to editor binding source ids (.current).

Methods

  • public static function currentSourceIds(?SitePage $page): array
    • Current Source Ids.

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPagePreviewEntityResolver

  • File: Support/DynamicPages/DynamicPagePreviewEntityResolver.php
  • Kind: class
  • Responsibility: Resolves dynamic route entities for editor binding preview (including AJAX).

Methods

  • public static function entitiesForEditorPreview(SitePage $page, ?Request $request = null): array
    • Entities For Editor Preview.
  • public static function slugBagFromModels(array $entities): array
    • Slug Bag From Models.
  • public static function slugBagFromRequestContext(): array
    • Slug Bag From Request Context.

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPagePreviewMatcher

  • File: Support/DynamicPages/DynamicPagePreviewMatcher.php
  • Kind: class
  • Responsibility: Heuristics to pick a preview record from SitePage metadata (title, slug).

Methods

  • public static function slugCandidates(?SitePage $page): array
    • Slug Candidates.
  • public static function titleCandidate(?SitePage $page): ?string
    • Title Candidate.

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPageRegistry

  • File: Support/DynamicPages/DynamicPageRegistry.php
  • Kind: class
  • Responsibility: Registry of companion dynamic page providers.

Methods

  • public function register(DynamicPageProvider $provider): self
    • Register routes, blocks, channels, and bindings for this module.
  • public function get(string $channelId): ?DynamicPageProvider
    • Get.
  • public function all(): array
    • All.
  • public function channelOptions(): array
    • Channel Options.
  • public function routeOptions(string $channelId): array
    • Route Options.
  • public function editorRouteEntityPatterns(): array
    • Editor Route Entity Patterns.

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPageRelatedBindingSourceRegistry

  • File: Support/DynamicPages/DynamicPageRelatedBindingSourceRegistry.php
  • Kind: class
  • Responsibility: Optional extra ".current" binding sources for a dynamic page channel.

Methods

  • public function register(string $channelId, string $sourceId, callable $when): void
    • Performs register side effects.
  • public function sourceIdsFor(string $channelId, SitePage $page): array
    • Source Ids For.

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPageRequestContext

  • File: Support/DynamicPages/DynamicPageRequestContext.php
  • Kind: class
  • Responsibility: Request-scoped bag for the active dynamic SitePage template + route entities.

Methods

  • public static function bind( SitePage $page, string $channel, array $entities = [], bool $editorPreview = false, ): void
    • Performs bind side effects.
  • public static function flush(): void
    • Performs flush side effects.
  • public static function page(): ?SitePage
    • Eloquent relation page.
  • public static function channel(): ?string
    • Channel.
  • public static function entities(): array
    • Entities.
  • public static function entity(string $key): ?Model
    • Entity.
  • public static function primaryEntity(): ?Model
    • Primary entity: first non-null value in the bag (stable insertion order).
  • public static function isEditorPreview(): bool
    • Boolean predicate isEditorPreview.
  • public static function isBound(): bool
    • Boolean predicate isBound.

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPageResolver

  • File: Support/DynamicPages/DynamicPageResolver.php
  • Kind: class
  • Responsibility: Resolve a published dynamic SitePage template and render it instead of Blade.

Methods

  • public static function maybeRender( string $channel, string $routeName, array $entities = [], ?Request $request = null, ): ?View
    • Maybe Render.
  • public static function findTemplate(string $channel, string $routeName, ?string $locale = null): ?SitePage
    • Find Template.
  • public static function schemaReady(): bool
    • Schema Ready.

Voodflow\Voodbuilder\Support\DynamicPages\DynamicPageSeo

  • File: Support/DynamicPages/DynamicPageSeo.php
  • Kind: class
  • Responsibility: Pick the best SEO subject when a dynamic SitePage template wraps route entities.

Methods

  • public static function subject(SitePage $page, array $entities): Model
    • Prefer the most specific bound entity that exposes SEO (HasSEO / getDynamicSEOData), otherwise fall back to the template page.

Voodflow\Voodbuilder\Support\DynamicPages\RendersDynamicSitePage

  • File: Support/DynamicPages/RendersDynamicSitePage.php
  • Kind: trait
  • Responsibility: Companion controllers: claim a dynamic SitePage template when published.

Methods

  • protected function renderDynamicSitePage(string $channel, string $routeName, array $entities = []): ?View
    • Render Dynamic Site Page.

Voodflow\Voodbuilder\Support\ReservedPathRegistry

  • File: Support/ReservedPathRegistry.php
  • Kind: class
  • Responsibility: First-segment URL prefixes that site-page catch-all routes must not claim.

Methods

  • public function reserve(string ...$prefixes): void
    • Performs reserve side effects.
  • public function all(): array
    • All.

Voodflow\Voodbuilder\Support\SitePageResolver

  • File: Support/SitePageResolver.php
  • Kind: class
  • Responsibility: Site Page Resolver.

Methods

  • public static function clearSchemaCache(): void
    • Performs clearSchemaCache side effects.
  • public static function hasLocalizationColumns(): bool
    • Boolean predicate hasLocalizationColumns.
  • public static function publishedFromSlug(string $slug): SitePage
    • Published From Slug.
  • public static function publishedForMenu(string $slug): ?SitePage
    • Published For Menu.
  • public static function localizationEnabled(): bool
    • Localization Enabled.
  • public static function preferredLocale(): string
    • Preferred Locale.

Voodflow\Voodbuilder\Support\SitePageRoutes

  • File: Support/SitePageRoutes.php
  • Kind: class
  • Responsibility: Registers public site-page catch-alls after companion reserved prefixes are known.

Methods

  • public static function register(): void
    • Performs register side effects.

Voodflow\Voodbuilder\Support\SitePageViewData

  • File: Support/SitePageViewData.php
  • Kind: class
  • Responsibility: Site Page View Data.

Methods

  • public static function make(SitePage $page, array $extra = []): array
    • Make.

Voodflow\Voodbuilder\Support\SubThemeRegistry

  • File: Support/SubThemeRegistry.php
  • Kind: class
  • Responsibility: Sub Theme Registry.

Methods

  • public function bootFromConfig(): void
    • Performs bootFromConfig side effects.
  • public static function packageSubThemeDefinitions(): array
    • Bundled themes from the package config. The host app's published config/voodbuilder.php replaces merged config, so app sub_themes must not
  • public function register(string $id, array $definition): self
    • $config = require $path; $themes = $config['sub_themes'] ?? [];
  • public function unregister(string $id): void
    • Performs unregister side effects.
  • public function exists(string $id): bool
    • Exists.
  • public function options(): array
    • Options.
  • public function optionsByType(SubThemeType $type): array
    • Options By Type.
  • public function optionsForCapability(SubThemeCapability $capability, ?string $includeId = null): array
    • Options For Capability.
  • public function marketingOptions(?string $includeId = null): array
    • Marketing Options.
  • public function contentOptions(?string $includeId = null): array
    • Content Options.
  • public function capabilities(string $id): array
    • Capability identifiers contributed or required by this module.
  • public function supportsCapability(string $id, SubThemeCapability $capability): bool
    • Supports Capability.
  • public function type(string $id): ?SubThemeType
    • Type.
  • public function idsByType(SubThemeType $type): array
    • Ids By Type.
  • public function label(string $id): string
    • Human-readable label shown in the admin/editor UI.
  • public function description(string $id): ?string
    • Description.
  • public function layout(string $themeId, string $layout): ?string
    • Layout.
  • public function resolveLayout(string $themeId, string $layout, array $alternates = []): ?string
    • Resolve Layout.
  • public function cssPath(string $themeId): ?string
    • Css Path.
  • public function chrome(string $id): array
    • Chrome.
  • public function ids(): array
    • Ids.

Voodflow\Voodbuilder\Support\VoodbuilderPaths

  • File: Support/VoodbuilderPaths.php
  • Kind: class
  • Responsibility: Voodbuilder Paths.

Methods

  • public static function packagePath(): string
    • Package Path.
  • public static function viteSourcePath(): string
    • Root used for Vite input paths / manifest lookups.
  • public static function themeCssAbsolutePath(): string
    • Theme Css Absolute Path.
  • public static function themeCssRelativePath(): string
    • Theme Css Relative Path.
  • public static function defaultViteEntries(): array
    • Default Vite Entries.
  • public static function editorViteEntry(): string
    • Editor Vite Entry.
  • public static function editorCssEntry(): string
    • Editor Css Entry.
  • public static function editorBlockPreviewCssEntry(): string
    • Editor Block Preview Css Entry.
  • public static function editorTabsCssEntry(): string
    • Editor Tabs Css Entry.
  • public static function editorFormsCssEntry(): string
    • Editor Forms Css Entry.
  • public static function viteInputEntries(): array
    • Vite Input Entries.
  • public static function editorCanvasStyleEntries(): array
    • Editor Canvas Style Entries.
  • public static function isVendorInstall(): bool
    • Boolean predicate isVendorInstall.
  • public static function viteManifestKeys(string $entry): array
    • Manifest keys to try for a Vite entry (vendor mirror ↔ packages path-repo).
  • public static function relativeToBasePath(string $absolutePath): string
    • Relative To Base Path.
Demo resets in 00:29:43