Skip to content

Commit 20aae45

Browse files
committed
docs: spiega la regola delle tabelle _lang nei Model e nel RecordTrait
1 parent 7f98734 commit 20aae45

4 files changed

Lines changed: 67 additions & 0 deletions

File tree

src/Models/Module.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,20 @@
3131
use Traits\ManagerTrait;
3232
use Traits\RecordTrait;
3333

34+
/**
35+
* Modulo installato nel gestionale.
36+
*
37+
* ## Campi traducibili – regola Dual Write
38+
* I campi in {@see Module::$translated_fields} NON risiedono in questa tabella.
39+
* Risiedono in `zz_modules_lang` (id_record, id_lang, title).
40+
*
41+
* Ogni INSERT su `zz_modules` DEVE essere seguito da un INSERT su `zz_modules_lang`:
42+
* ```php
43+
* $id = $dbo->insert('zz_modules', ['name' => 'mio_modulo', 'enabled' => 1]);
44+
* $dbo->insert('zz_modules_lang', ['id_record' => $id, 'id_lang' => $id_lang, 'title' => 'Mio Modulo']);
45+
* ```
46+
* Per aggiornare una traduzione usa {@see \Traits\RecordTrait::setTranslation()}.
47+
*/
3448
class Module extends Model
3549
{
3650
use SimpleModelTrait;

src/Models/Setting.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,20 @@
2525
use Traits\LocalPoolTrait;
2626
use Traits\RecordTrait;
2727

28+
/**
29+
* Impostazione di sistema.
30+
*
31+
* ## Campi traducibili – regola Dual Write
32+
* I campi in {@see Setting::$translated_fields} NON risiedono in questa tabella.
33+
* Risiedono in `zz_settings_lang` (id_record, id_lang, title, help).
34+
*
35+
* Ogni INSERT su `zz_settings` DEVE essere seguito da un INSERT su `zz_settings_lang`:
36+
* ```php
37+
* $id = $dbo->insert('zz_settings', ['nome' => 'mia_impostazione', 'valore' => '', 'tipo' => 'text']);
38+
* $dbo->insert('zz_settings_lang', ['id_record' => $id, 'id_lang' => $id_lang, 'title' => 'Mia impostazione']);
39+
* ```
40+
* Per aggiornare una traduzione usa {@see \Traits\RecordTrait::setTranslation()}.
41+
*/
2842
class Setting extends Model
2943
{
3044
use SimpleModelTrait;

src/Models/View.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,20 @@
2525
use Traits\RecordTrait;
2626
use Util\Query;
2727

28+
/**
29+
* Colonna/vista configurabile per le liste dei moduli.
30+
*
31+
* ## Campi traducibili – regola Dual Write
32+
* I campi in {@see View::$translated_fields} NON risiedono in questa tabella.
33+
* Risiedono in `zz_views_lang` (id_record, id_lang, title).
34+
*
35+
* Ogni INSERT su `zz_views` DEVE essere seguito da un INSERT su `zz_views_lang`:
36+
* ```php
37+
* $id = $dbo->insert('zz_views', ['id_module' => $id_module, 'name' => 'campo', 'query' => '...']);
38+
* $dbo->insert('zz_views_lang', ['id_record' => $id, 'id_lang' => $id_lang, 'title' => 'Etichetta']);
39+
* ```
40+
* Per aggiornare una traduzione usa {@see \Traits\RecordTrait::setTranslation()}.
41+
*/
2842
class View extends Model
2943
{
3044
use SimpleModelTrait;

src/Traits/RecordTrait.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,31 @@
2424
use Models\Module;
2525
use Models\Plugin;
2626

27+
/**
28+
* Gestione dei campi traducibili tramite tabelle `_lang`.
29+
*
30+
* ## Contratto Dual Write
31+
* I Model che usano questo trait hanno campi traducibili (es. `title`, `descrizione`, `help`)
32+
* che NON risiedono nella tabella principale ma in una tabella `<tabella>_lang` separata:
33+
*
34+
* ```
35+
* Tabella principale: zz_modules (id, name, enabled, ...)
36+
* Tabella traduzioni: zz_modules_lang (id, id_record, id_lang, title)
37+
* ```
38+
*
39+
* **Regola**: ogni INSERT sulla tabella principale DEVE essere seguito da un INSERT
40+
* sulla tabella `_lang` corrispondente per ogni lingua disponibile.
41+
* In caso contrario il campo traducibile risulterà vuoto nell'interfaccia.
42+
*
43+
* ## Metodi disponibili
44+
* - {@see setTranslation()} – scrive/aggiorna una traduzione
45+
* - {@see getTranslation()} – legge una traduzione
46+
* - {@see save()} – override: sincronizza automaticamente i `_lang` al salvataggio
47+
*
48+
* ## Quali Model usano questo trait
49+
* Tutti i Model con la proprietà `$translated_fields` definita:
50+
* `Module`, `Setting`, `View`, `Plugin`, `PrintTemplate` e i Model dei moduli in `src/`.
51+
*/
2752
trait RecordTrait
2853
{
2954
abstract public function getModuleAttribute();

0 commit comments

Comments
 (0)