--- id: KB-PLUGIN-036 title: "GLPI 11 — Namespaces obrigatórios para componentes do core (Twig e RichText)" domain: plugin-dev tags: - glpi11 - plugin - twig - namespaces - templaterenderer - richtext - gotcha status: active severity: medium created_at: 2026-06-29 updated_at: 2026-06-29 applies_to: - plugins GLPI 11.x que renderizam Twig ou manipulam HTML do core --- # GLPI 11 — Namespaces obrigatórios para componentes do core (Twig e RichText) A partir do GLPI 10.0+ e consolidado no GLPI 11, diversas classes utilitárias e componentes visuais do core deixaram o escopo global (global namespace) e passaram a exigir a importação estrita de seus respectivos namespaces. O não uso dos namespaces corretos resulta em `Attempted to load class "NomeDaClasse" from the global namespace`. ## 1. TemplateRenderer (renderização de Twig) Para renderizar formulários modernos usando a engine do Twig (arquivos `.html.twig`), a antiga chamada `TemplateRenderer::getInstance()->display()` (sem namespace) falha. ```php // Certo \Glpi\Application\View\TemplateRenderer::getInstance()->display('@meuplugin/template.html.twig', [ 'variavel' => 'valor' ]); ``` *Dica: também é possível declarar `use Glpi\Application\View\TemplateRenderer;` no topo do arquivo PHP.* ## 2. RichText (limpeza e manipulação de HTML) O GLPI frequentemente injeta tags HTML como `

` e `
` (geradas pelo TinyMCE) em campos de descrição (`content`). Para limpar essas tags antes de exibir em formulários externos ou APIs, use a classe `RichText` com seu namespace correto. ```php // Certo $clean_text = \Glpi\RichText\RichText::getTextFromHtml($fields['content'], false, true, true); ``` *Dica: também é possível declarar `use Glpi\RichText\RichText;` no topo do arquivo PHP.* ## Resumo de namespaces críticos para views | Classe antiga (global) | Novo namespace GLPI 11 | Propósito | | :--- | :--- | :--- | | `TemplateRenderer` | `\Glpi\Application\View\TemplateRenderer` | Renderizar interfaces em Twig | | `RichText` | `\Glpi\RichText\RichText` | Remover/escapar tags HTML de descrições | ## Onde isso pegou na vida real No plugin `redmine`, `project.class.php` quebrava com `Attempted to load class "RichText"/"TemplateRenderer" from the global namespace` até os usos serem qualificados com `\Glpi\...`. Relacionado: [[KB-PLUGIN-032]].