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,
];

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 »