Mécanismes d’extensions

Créer un fichier dans local

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 :

  • {section}` est égal à config ou views ;
  • {application}` correspond à apps + un nom d’application ou novius-os pour le moteur.

Configuration

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.

Vues

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.

Utiliser les évènements pour modifier une configuration

N’importe quel fichier de configuration peut être modifié grâce à l’évènement config|<path>.

Remplacer une vue par une autre

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');

Créer une application dédiée d’extension

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.

Exemple :

application_2 étend mon_application.

Configuration

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).

Vues

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.