Yii Framework Forum: Generare Il Crud Per Un Sito Bilingue Utilizzando Cdbmessagesource - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Generare Il Crud Per Un Sito Bilingue Utilizzando Cdbmessagesource Rate Topic: -----

#1 User is offline   loccipitale 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 21-April 13

Posted 21 April 2013 - 02:40 PM

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.
Come posso fare?

Grazie in anticipo per qualsiasi risposta
0

#2 User is offline   st4nny 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 336
  • Joined: 10-April 12

Posted 21 April 2013 - 05:52 PM

le tabelle che tipo di relazione hanno tra di loro?

perchè se SourceMessages HAS_MANY Message, non vedo l'attributo che fa da chiave esterna.

cmq per avere quello che richiedi tu tramite crud, se ho capito bene la logica del tuo db, non è possibile.
cioè lo puoi fare, ma mettendo un pò mano al codice.

Se vuoi che le crud ti generino una form come dicevu tu, allora devi avere un'unica tabella
con i campi che dicevi.
0

#3 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 22 April 2013 - 07:35 AM

Che cosa ti impedisce di fare quello che vorresti fare?
0

#4 User is offline   gdang 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 37
  • Joined: 20-August 11
  • Location:Venice

Posted 23 April 2013 - 12:47 PM

Secondo usare 't' per la traduzione sulle labels?
I'm beautiful and I dance well!
0

#5 User is offline   loccipitale 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 21-April 13

Posted 24 April 2013 - 10:10 AM

View Postst4nny, on 21 April 2013 - 05:52 PM, said:

le tabelle che tipo di relazione hanno tra di loro?

perchè se SourceMessages HAS_MANY Message, non vedo l'attributo che fa da chiave esterna.

cmq per avere quello che richiedi tu tramite crud, se ho capito bene la logica del tuo db, non è possibile.
cioè lo puoi fare, ma mettendo un pò mano al codice.

Se vuoi che le crud ti generino una form come dicevu tu, allora devi avere un'unica tabella
con i campi che dicevi.


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.

View Postsensorario, on 22 April 2013 - 07:35 AM, said:

Che cosa ti impedisce di fare quello che vorresti fare?


Non so da che parte iniziare :D .

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?
0

#6 User is offline   loccipitale 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 3
  • Joined: 21-April 13

Posted 24 April 2013 - 10:12 AM

View Postgdang, on 23 April 2013 - 12:47 PM, said:

Secondo usare 't' per la traduzione sulle labels?

Per la traduzione non ci sono problemi, funziona tutto, devo solo capire come poter fare gestire i messaggi del sito all'amministratore.
0

#7 User is offline   sensorario 

  • Elite Member
  • Yii
  • Group: Moderators
  • Posts: 1,987
  • Joined: 07-September 10
  • Location:Cesena (Italy)

Posted 24 April 2013 - 05:58 PM

View Postloccipitale, on 24 April 2013 - 10:10 AM, said:

Non so da che parte iniziare :D .


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.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users