Per chi non usa o non ricorda come funziona CDbMessageSource
Quote
Ci sono due tabelle: MessageSource che fa riferimento ai testi che noi scriviamo nel codice (appunto i messaggi del source) e Message che contiene le traduzioni. Usare Yii::t() mi sembrava decisamente scomodo per testi di intere pagine web. Da qui l'idea di inserire comunque in Message ANCHE le traduzioni in italiano.
Un'altra premessa va fatta per quanto riguarda Jquery: utilizzo un widget che, vi ricordo, ad ogni nodo prevede un array del tipo:
array(
'text' => 'testo che appare',
'chilndren' => array(
array(
array('text' => 'nodo figlio'),
array('text' => 'nodo figlio'),
array('text' => 'nodo figlio'),
array('text' => 'nodo figlio'),
)
),
);
Detto questo, ho iniziato ad arricchire il mio model in questo modo: un metodo per caricare tutte le categorie, uno per contare il numero di messaggi, uno per restituire tutti i testi di una categoria, uno che restituisse l'intero albero.
public static function findAllCategory() {
return SourceMessage::model()->findAll(array(
'select' => 'distinct(category)',
));
}
public static function countHowManyCategory($category) {
$arrayCounter = SourceMessage::model()->findAll(array(
'select' => 'count(category) category',
'condition' => 'category=:category',
'params' => array(
':category' => $category,
)
));
foreach ($arrayCounter as $item)
return $item['category'];
}
public static function findAllTextsInACategory($category) {
$message = SourceMessage::model()->findAll(array(
'select' => 'message,id',
'condition' => 'category=:category',
'params' => array(
':category' => $category,
)
));
$messages = array();
foreach ($message as $item)
$messages[] = array(
'text' => $item['message'],
'children' => array(
array('text' => 'it'),
array('text' => 'en'),
)
);
return $messages;
}
public static function contentTree() {
$arrCategories = array();
foreach (SourceMessage::findAllCategory() as $item) {
$arrCategories[] = array(
'text' => $item['category'] . ' ' . SourceMessage::countHowManyCategory($item['category']),
'children' => SourceMessage::findAllTextsInACategory($item['category']),
);
}
return $arrCategories;
}Ho fatto bene? Vi sembra una buona soluzione? Seguirò con l'uso di TinyMCE che ho già incluso nel mio progetto. L'idea è quella di avere tutti i contenuti raggiungibili da una struttura ad albero da un lato, e l'editor tinymce dall'altro.
Attached File(s)
-
screenshot3.png (13.31K)
Number of downloads: 12

Help












