Drupal : Charger un plugin manuellement
Un plugin Drupal est un essemble de codes definit suivant un concept permettant de ressoudre des besoins precis.
Les plugins sont chargés de maniere automatique en fonction du besoin, mais il peut arriver des cas ou vous souhaitez charger votre plugin de maniere manuelle.
Plusieurs approche sont disponible afin de charger votre plugin.
1: createInstance
La methode createInstance permet de creer une instance du plugin. Pour utliser cette methode vous devez determiner le gestionnaire de plugin.
Prenoms par example du plugin "boolean" (core/modules/views/src/Plugin/views/filter/BooleanOperator.php).
...
* @ingroup views_filter_handlers
*
* @ViewsFilter("boolean")
*/
class BooleanOperator extends FilterPluginBase {
...
ViewsFilter represente generalement le nom de la classe pour l'annotation. De la nous pouvons remonter au gestionnaire du plugin (core/modules/views/src/Plugin/ViewsHandlerManager.php) via une recherche.
A la suite il faut determiner le service : ( dans le fichier [ModuleName].services.yml )
...
plugin.manager.views.filter:
class: Drupal\views\Plugin\ViewsHandlerManager
arguments: [filter, '@container.namespaces', '@views.views_data', '@cache.discovery', '@module_handler']
...
Vous pouvez charger votre service :
***
/**
*
* @var \Drupal\views\Plugin\ViewsHandlerManager $ViewsHandlerManager
*/
$ViewsHandlerManager = \Drupal::service('plugin.manager.views.filter');
$options = [];
/**
*
* @var \Drupal\views\Plugin\views\filter\BooleanOperator $instance
*/
$instance = $ViewsHandlerManager->createInstance('boolean', $options);