Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Concord Laravel Package

konekt/concord

Laravel extension for building modular applications using conventions on top of service providers. Manage in-app and external modules with isolation-friendly structure, version compatibility across Laravel releases, and tooling around module registration and organization.

View on GitHub
Deep Wiki
Context7

Configuration

Basically, the configuration of modules happens the "Laravel way", ie. simple php files returning arrays, but there are some minor additions.

Module Config

When listing modules in config/concord.php it's possible to set configuration for that module:

//config/concord.php
return [
  'modules' => [
      // Setting module config:
      Konekt\AppShell\Providers\ModuleServiceProvider::class => [
          'migrations' => false,
          'ui' => [
              'name' => 'Dashboard'              
          ]
      ]
  ]  
];

Concord will store these values in the application's configuration, using the module id as base key:

config('konekt.app_shell.migrations');
// false
config('konekt.app_shell.ui.name');
// "Dashboard"

Concord Specific Configuration

There are several directives with you can influence the module loading:

Directive Default Value Meaning
migrations true If false, module's migrations won't be published
models true If false, module's models, enums and request types won't be registered
views true If false, module's views won't be available
routes true If false, module's routes won't be registered
event_listeners NULL If true, the module's event-listener bindings will be registered

Default Module Configuration

External modules and boxes are encouraged to set their own config defaults. These are plain php files as well, containing arrays. They have to be located in:

  • resources/config/module.php for modules
  • resources/config/box.php for boxes

This is the location where boxes can list the modules they incorporate:

Example:

// resources/config/box.php
return [
    'modules' => [
        Konekt\Address\Providers\ModuleServiceProvider::class => [],
        Konekt\Customer\Providers\ModuleServiceProvider::class => [],
        Konekt\User\Providers\ModuleServiceProvider::class => [],
        Konekt\Acl\Providers\ModuleServiceProvider::class => []
    ],
    'event_listeners' => true,
];

Box Configuration

Cascade Submodule Configuration

Feature available in v1.6+

Boxes - modules that include other modules - can override configuration values of all the included modules using the cascade_config config key:

// config/concord.php
return [
    'modules' => [
        Vendor\Box\Providers\ModuleServiceProvider::class => [
            'cascade_config' => [
                'migrations' => false, // disables migrations of all submodules in the box,
                'some_value' => 'YES!', // Sets `some_value` to "YES!" in all submodules      
            ]
        ]
    ] 
];

Using Application Config Files

Your modules can also use package config files (in the app's config/ folder). This can use the same "namespace" as your module id, in this case the values will be merged. Or you can use any other name for the configuration keys, that's completely up to you.

Example:

/**
 * config/concord.php:
 */
return [
    'modules' => [
        Vanilo\Cart\Providers\ModuleServiceProvider::class => [
            'routes' => false            
        ]        
    ]
];

/**
 * config/vanilo.php:
 */
return [
    'cart' => [
        'session_key' => 'vaniloCartId'
        
    ]
];

Results in:

dump(config('vanilo'));
// array:1 [
//   "cart" => array:6 [
//     "session_key" => "vaniloCartId"
//     "auto_destroy" => false
//     "implicit" => true
//     "migrations" => true
//     "views" => true
//     "routes" => false
//   ]
// ]

Next: Migrations »

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui