- adiciona front matter completo ao record de namespaces (estava sem metadados) - renomeia para o próximo ID livre (036), resolvendo a colisão de ID 032 - kb_check --fix: index.json sincronizado; kb_check: OK Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2.3 KiB
| id | title | domain | tags | status | severity | created_at | updated_at | applies_to | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| KB-PLUGIN-036 | GLPI 11 — Namespaces obrigatórios para componentes do core (Twig e RichText) | plugin-dev |
|
active | medium | 2026-06-29 | 2026-06-29 |
|
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.
// 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 <p> e <br> (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.
// 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.