Salve a tutti, sono nuovo di Yii, e sto provando a creare un sito che dovra’ fornire i contenuti in due lingue, italiano ed inglese.
Per ora ho utilizzato la classe CDbMessageSource perche’ l’amministratore del sito dovra’ poter gestire le traduzioni, quindi ho 2 tabelle SourceMessages(id, category, message) e Messages(id, language, translation).
Mi rimane solo da generare il CRUD ed il problema e’ questo: vorrei poter gestire le traduzioni attraverso un unico controller, SourceMessages, ed aggiungere i campi delle relative traduzioni in tutte le azioni di SourceMessages, essendo che le lingue sono e rimarranno solo due.
Ad esempio nel form per creare un nuovo SourceMessage dovro’ avere i campi:
category
message
translation_en
translation_it
Ed allo stesso modo nella ricerca dovro’ poter filtrare i risultati anche in base alle traduzioni.
Si, le tabelle hanno una relazione HAS_MANY, la tabella Messages ha come chiava primaria la coppia id, language, e come chiave esterna l’id relativo all’id della tabella SourceMessages.
Non so da che parte iniziare .
Quello che mi sembra il problema maggiore e’ fare il join delle due tabelle per ottenere i dati da passare come dataProvider alla view dell’action admin. La query equivalente che farei in sql per poter fare le ricerche nell’unione delle tabelle sarebbe:
SELECT id, category, message, t_en, t_it
FROM (
SELECT source_messages.id, source_messages.message, source_messages.category
messages_en.translation AS t_en, messages_it.translation AS t_it
FROM source_messages
LEFT JOIN messages AS messages_en ON ( messages_en.id = source_messages.id
AND messages_en.language = 'en_us' )
LEFT JOIN messages AS messages_it ON ( messages_it.id = source_messages.id
AND messages_it.language = 'it_it' )
)
AS t1
WHERE ...condizioni...
E’ possibile passare qualcosa del genere? Devo intervenire nel metodo search del modello SourceMessages?
Dalla documentazione loccipitale. So che sembra una risposta stronza, ma prima si potrebbe passare da li, e poi si può chiedere qui come mai qualche cosa non va. La questione della lingua è già gestita da Yii. Se serve ti linko la pagina della documentazione che devi leggerti.