Facade Methods


The Module facade provides static access to the module repository. Import it at the top of your file:

Copied!
use Nwidart\Modules\Facades\Module;

#Retrieving Modules

#Get All Modules

Returns an array of all modules (enabled and disabled):

Copied!
$modules = Module::all();

#Get All Enabled Modules

Copied!
$activeModules = Module::allEnabled();

#Get All Disabled Modules

Copied!
$inactiveModules = Module::allDisabled();

#Get Ordered Modules

Returns modules sorted by the priority field in module.json. Lower numbers come first:

Copied!
$modules = Module::getOrdered(); // ascending (default)
$modules = Module::getOrdered('desc'); // descending

#Get Modules as a Collection

Copied!
$collection = Module::toCollection();
$collection = Module::collections(); // enabled modules only

#Filter by Status

Get modules by status (1 = enabled, 0 = disabled):

Copied!
$enabled = Module::getByStatus(1);
$disabled = Module::getByStatus(0);

#Scan for Modules

Scan the filesystem for modules (re-reads the disk, bypassing any cache):

Copied!
$modules = Module::scan();

#Finding a Module

#Find by Name

Returns the Module instance or null if not found:

Copied!
$module = Module::find('blog');

#Find or Fail

Returns the Module instance or throws Nwidart\Modules\Exceptions\ModuleNotFoundException:

Copied!
$module = Module::findOrFail('blog');

#Check Existence

Copied!
if (Module::has('blog')) {
// module exists
}

#Checking Module Status

Copied!
Module::isEnabled('Blog'); // bool
Module::isDisabled('Blog'); // bool

#Enabling and Disabling

Copied!
Module::enable('Blog');
Module::disable('Blog');

#Counting Modules

Copied!
$total = Module::count();

#Path Methods

Copied!
Module::getPath(); // path to the Modules root directory
Module::getModulePath('Blog'); // path to the Blog module directory
Module::assetPath('Blog'); // path to the Blog module's public assets
Module::getAssetsPath(); // path to the modules asset directory
Module::asset('blog:img/logo.png'); // URL to a module asset

#CLI Session Helpers

These methods track which module is "in use" for the current CLI session, allowing you to omit the module name on generator commands after running module:use:

Copied!
Module::setUsed('Blog');
Module::getUsedNow(); // returns 'Blog'
Module::getUsedStoragePath(); // path to the .modulesuse session file

#Installing and Updating

Install a module from a Composer package name:

Copied!
Module::install('nwidart/article-module');

Update a module's Composer dependencies:

Copied!
Module::update('Blog');

#Delete a Module

Permanently deletes the module directory:

Copied!
Module::delete('Blog');

#Configuration

Read values from the laravel-modules package configuration:

Copied!
Module::config('composer.vendor'); // reads config/modules.php

#Macros

Extend the module repository with custom methods:

Copied!
Module::macro('enabledCount', function () {
return count($this->allEnabled());
});
 
// Call it
$count = Module::enabledCount();

#Practical Examples

#Render a Navigation Menu from Enabled Modules

Copied!
@foreach (Module::allEnabled() as $module)
<a href="{{ route($module->getLowerName() . '.index') }}">
{{ $module->getName() }}
</a>
@endforeach

#Check a Module Before Using Its Features

Copied!
if (Module::isEnabled('Shop')) {
$cartCount = app(\Modules\Shop\Services\CartService::class)->count();
}

#Get Scan Paths

Copied!
$paths = Module::getScanPaths(); // directories scanned for modules


Laravel Package built by Nicolas Widart.

Maintained by David Carr follow on X @dcblogdev