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