microweber-packages / microweber-module-registry
Standalone Microweber module registry for Laravel. Register, discover, render modules and scan blade skins/templates. Usable inside the CMS or any standalone Laravel app.
Package info
github.com/microweber-packages/microweber-module-registry
pkg:composer/microweber-packages/microweber-module-registry
Requires
- php: ^8.2
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
- illuminate/view: ^10.0|^11.0|^12.0|^13.0
- microweber-packages/microweber-package: *
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- larastan/larastan: ^3.0
- livewire/livewire: ^3.0|^4.0
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpstan/phpstan: ^2.0
- phpunit/phpunit: ^10.0|^11.0
Suggests
- livewire/livewire: Required for the NoSettings Livewire component used as the default module settings UI
- microweber-packages/filesystem: Provides normalize_path() used by blade template scanning
- microweber-packages/url: Provides UrlManager for the optional ManagesUrl trait
Provides
None
Conflicts
None
Replaces
- microweber-packages/module-registry: *
This package is auto-updated.
Last update: 2026-11-04 15:38:04 UTC
README
Standalone Laravel package that provides the Microweber module registry: register modules, render them, discover blade skins/templates, and integrate with Live Edit settings.
Usable inside the Microweber CMS or in any standalone Laravel application.
Installation
composer require microweber-packages/microweber-module-registry
The service provider auto-discovers. If you disable discovery, register:
MicroweberPackages\ModuleRegistry\ModuleRegistryServiceProvider::class,
Usage
Register a module
use MicroweberPackages\ModuleRegistry\Facades\ModuleRegistry; use App\Modules\HeroModule; // In a service provider register(): ModuleRegistry::module(HeroModule::class);
Render a module
$html = ModuleRegistry::render('hero', ['id' => 'module-1']);
List modules / settings
$modules = ModuleRegistry::getModules(); $details = ModuleRegistry::getModulesDetails(); $settings = ModuleRegistry::getSettingsComponents(); $skins = ModuleRegistry::getTemplates('hero');
Define a module
use MicroweberPackages\ModuleRegistry\Abstract\BaseModule; class HeroModule extends BaseModule { public static string $name = 'Hero'; public static string $module = 'hero'; public static string $templatesNamespace = 'modules.hero::templates'; }
Blade skin scanning
use MicroweberPackages\ModuleRegistry\Support\ScanForBladeTemplates; $scanner = new ScanForBladeTemplates(); $skins = $scanner->scan('modules.hero::templates', 'hero');
CMS compatibility aliases
The container binding microweber and the Microweber facade alias remain available for backward compatibility:
app()->microweber->hasModule('hero'); \MicroweberPackages\ModuleRegistry\Facades\Microweber::module(HeroModule::class);
Optional CMS helpers
When running outside the CMS, option/template helpers (get_option, template_name, …) are no-ops or return safe defaults. Register modules and render with explicit params for full standalone use.
Testing
composer test
composer analyse
License
MIT
Authors
Part of Microweber, built by:
- Peter Ivanov
- Bozhidar Slaveykov