− Table of content
Modules are grouped in one or several directories called modules group, or repository of modules.
Jelix must know the path of these directories so it can access to them.
These paths can be declared with an API into application.init.php
,
or into the composer.json
file of package that provide modules.
Warning: the automatic discovery into composer.json
file can be
done only if you activated the composer plugin bundled with Jelix,
into the composer.json
file of your project.
{
"config": {
"allow-plugins": {
"jelix/composer-module-setup": true
}
}
}
Declaring a modules group ¶
Module groups are declared with jApp
or into the composer.json file if you
installed Jelix with Composer. (In Jelix 1.6 and lower, it was into the
configuration, in the properties modulesPath).
An example with jApp
in the application.init.php
file:
jApp::declareModulesDir(__DIR__.'/modules/');
Here the directory modules/
is declared as a module repository.
Modules from this directory could be activated and installed in your application.
If you installed Jelix with Composer, you have an other solution: declare the directories into the composer.json file of your application. This solution is highly recommended also for Composer packages which provide modules for Jelix. Declare directories and modules into the composer.json of the package, and it will be automatically taken account.
{
...
"extra" : {
"jelix": {
"modules-dir" : [
"modules/",
]
}
}
}
Here it declares the modules/
directory that is in the same directory of the
composer.json.
Note that modules directories provided with jelix are automatically declared.
Declaring a single module ¶
Like for groups of modules, you can declare directly a module directory with jApp
or into the composer.json file of the application or the composer.json file of the
Composer package which provides the module.
jApp::declareModule(__DIR__.'/my_module/');
or in a composer.json file:
{
...
"extra" : {
"jelix": {
"modules" : [
"my_module/",
]
}
}
}
An other possibility is to declare its path into the application configuration. It is done into the modules
section, with a parameter *.path
, for example:
[modules]
my_module.path = app:vendor/my_vendor_name/my_package/the_module
It eases migration from jelix 1.6.x and is useful to declare a module with a configuration script, which cannot add a line of code into application.init.php without risks.