On peut modifier n’importe quel fichier de vue, de configuration ou de langue via le dossier local.
Ceci est possible grâce au comportement des fichiers chargés « en cascade » existant dans FuelPHP et adapté dans Novius OS. C’est très simple à faire, car il suffit de copier un fichier existant et de le modifier à notre guise !
Dans le cas d’une application, il faut copier le fichier dans local/config/apps/{application}/ ou local/views/apps/{application}/.
Pour étendre un fichier du moteur de Novius OS, on utilisera local/config/apps/novius-os/ et local/views/novius-os/.
La syntaxe « générique » est donc local/{section}/{application}/ avec :
L’application noviusos_page possède un fichier de configuration controller/admin/appdesk.config.php (le fichier se situe donc dans noviusos_page::config/controller/admin/appdesk.config.php).
Si on le copie dans local/config/apps/noviusos_page/controller/admin/appdesk.config.php alors ce dernier sera fusionné automatiquement avec celui de l’application qui le demande.
Lorsqu’on créé le fichier local/views/apps/noviusos_help/admin/help.view.php ce dernier est utilisé en remplacement de noviusos_help::admin/help.view.php !
Pour étendre un fichier du moteur, on utilisera le nom d’application novius-os. Par exemple, on créera le fichier local/views/novius-os/admin/login.view.php.
N’importe quel fichier de configuration peut être modifié grâce à l’évènement config|<path>.
Il est possible de faire appel à la méthode View::redirect() pour remplacer un fichier de vue par un autre.
<?php
// Remplace la vue 'admin/help' de l'application 'noviusos_help' par la vue 'help' du dossier 'local'
View::redirect('noviusos_help::admin/help', 'local::help');
Pour étendre une application, on créé une autre application qui va modifier la première.
L’application 2 définit qu’elle étend mon_application via son fichier metadata.config.php :
<?php
return array(
'name' => 'Application 2',
// On définit que c'est une application d'extension
'extends' => array(
'my_application',
);
);
Une fois application_2 installée, elle sera chargée en même temps que mon_application.
Lorsqu’une application étend une autre, certains comportements deviennent automatiques.
Voir aussi
Exemple :
application_2 étend mon_application.
Les fichiers de configurations des Controller et des Model de mon_application peuvent être automatiquement étendus par application_2.
Exemple, mon_application définit le fichier de configuration suivant pour Controller_Test : applications/mon_application/config/controller/test.config.php
Si dans application_2, le fichier correspondant applications/application_2/config/apps/mon_application/controller/test.config.php existe, alors il sera fusionné.
C’est-à-dire que dans Mon\Application\Controller_Test, la variable $config contiendra la fusion 2 fichiers (celui de l’application étendue mon_application, et aussi celui de application_2 qui étend la première).
Les fichiers de vues de mon_application peuvent être remplacés par application_2.
Exemple, mon_application a une vue views/admin/help.view.php
Si dans application_2, le fichier correspondant applications/application_2/views/apps/mon_application/admin/help.view.php existe, il sera utilisé à la place de celui de mon_application.