kb: corrige KB-PLUGIN-032 órfão -> KB-PLUGIN-036 (namespaces Twig/RichText) e normaliza index
- 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>
This commit is contained in:
parent
411ffed535
commit
5b73169939
2 changed files with 87 additions and 2 deletions
22
index.json
22
index.json
|
|
@ -53,7 +53,7 @@
|
|||
},
|
||||
{
|
||||
"id": "KB-INFRA-004",
|
||||
"title": "Forgejo onmind é o origin de desenvolvimento (todo trabalho dev é versionado lá)",
|
||||
"title": "\"Forgejo onmind é o origin de desenvolvimento (todo trabalho dev é versionado lá)\"",
|
||||
"domain": "infrastructure",
|
||||
"tags": [
|
||||
"git",
|
||||
|
|
@ -680,6 +680,24 @@
|
|||
"severity": "medium",
|
||||
"path": "records/plugin-dev/KB-PLUGIN-035-glpi11-service-desk-kpi-data-model.md",
|
||||
"summary": "id: KB-PLUGIN-035"
|
||||
},
|
||||
{
|
||||
"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",
|
||||
"path": "records/plugin-dev/KB-PLUGIN-036-glpi11-namespaces-twig.md",
|
||||
"summary": "id: KB-PLUGIN-036"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
|||
67
records/plugin-dev/KB-PLUGIN-036-glpi11-namespaces-twig.md
Normal file
67
records/plugin-dev/KB-PLUGIN-036-glpi11-namespaces-twig.md
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
---
|
||||
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 `<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.
|
||||
|
||||
```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]].
|
||||
Loading…
Reference in a new issue