Joomla.it Forum

Non solo Joomla... => Sviluppo => : franklg 03 Dec 2006, 18:47:53

: passaggio parametri tra componenti
: franklg 03 Dec 2006, 18:47:53
Solo da poco tempo mi sto dedicando a joomla e la cosa mi sta appassionando parecchio. Chiaramente mi si stanno presentando parecchi problemini, alcuni li ho risolti da solo (quelli proprio banali), altri con l'aiuto di questa meravigliosa comunità.
Ora ho un problema che non riesco proprio a risolvere e non so proprio da dove iniziare, esso è il seguente:
Ho inserito nel menù "othermenu" 4 voci di menu che corrispondono a 4 semplicissime componenti sviluppate da me, li chiamiamo com1, com2, com3 e com4.
Ho sviluppato inoltre un'ulteriore componente (che chiamiamo com5) perfettamente funzionante che fa una ricerca di articoli su un db mysql. Le componenti com1, com2 com3 e com4 devono richiamare com5 per selezionare degli articoli, solamente che com5 deve sapere quale componente (o voce di menù) lo ha richiamato per comportarsi di conseguenza. La domanda è la seguente:
1) c'è la possibilità di passare un parametro da un componete ad un'altro (o da una voce di menu ad una componete)? per es. passare un parametro da com1 a com5 o da com3 a com5.
2) se volessi poi chiudere com5 come faccio a ritornare a com1?
Spero di essere stato chiaro nel porre il problema.
Se qualcuno mi può dare una indicazione vi sarei molto grato.
saluti a tutti Frank
: Re: passaggio parametri tra componenti
: napo 03 Dec 2006, 18:55:55
Per passare un parametro ad uno script è sufficiente utilizzare i normali meccanismi di GET o POST.
Trattandosi di voci di menu dovrai usare GET.
Quindi richiamerai com5 passandogli tutti i parametri che gli servono; qualcosa del tipo:
index.php?option=com_com5&referer=com2&var1=xxx&var2=yyy

All'interno di com5 li reperirai mediante la funzione mosGetParam().
: Re: passaggio parametri tra componenti
: franklg 03 Dec 2006, 19:11:10
Ti ringrazio per il suggerimento.
Per ritornare poi da com5 alla componente chiamante ( x es. com1) immagino devo passargli il nome della com1 cioè index.php?option=com_com1        vero? oppure c'è un modo per passare al modulo precedente cliccando su un tasto (come per es il tasto torna indietro di firefox) ?
Quando lancio una voce di menù nella barra degli indirizzi compare in fondo un numero (itemid=55) index.php?option=com_5&Itemid=55 è importante? lo devo passare?
grazie frank
: Re: passaggio parametri tra componenti
: napo 03 Dec 2006, 19:22:07
Per ritornare poi da com5 alla componente chiamante ( x es. com1) immagino devo passargli il nome della com1 cioè index.php?option=com_com1        vero?

Sì, devi dirgli dove tornare.
Potresti anche usare il referer HTTP ma non sempre funziona come vorresti.

Quando lancio una voce di menù nella barra degli indirizzi compare in fondo un numero (itemid=55) index.php?option=com_5&Itemid=55 è importante? lo devo passare?

Itemid è legato ad ogni singola voce di menu.
L'ideale sarebbe ricavare dinamicamente l'itemid del com5 e passarglielo.
: Re: passaggio parametri tra componenti
: franklg 03 Dec 2006, 19:29:11
Scusa la mia ignoranza ma come si ricava dinamicamente l'itemid di un componente per passarlo ?
grazie frank
: Re: passaggio parametri tra componenti
: napo 03 Dec 2006, 19:45:35
Scusa la mia ignoranza ma come si ricava dinamicamente l'itemid di un componente per passarlo ?

Con una query al DB.
: Re: passaggio parametri tra componenti
: franklg 04 Dec 2006, 17:20:05
Scusami, ma sto impazzendo su come reperire l'itemid di un componente. Quale query devo fare?
Inoltre esiste una funzione di joomla che mi ritorni l'indirizzo del componente in esecuzione? (es. http://localhost/joomla/index.php?option=com_prova1&Itemid=55)

e l'indirizzo di chi ha lanciato il componente? (es. http://localhost/joomla/index.php?option=com_prova0&Itemid=50
o http://localhost/joomla/index.php)

Per la funzione MosGetParam esiste da qualche parte documentazione  da cui si capisca quali sono i parametri che devono essere passati e i relativi risultati ottenuti?

Capisco che sono parecchie le domande che pongo, però essendo ancora novello non so ancora come muovermi.
Scusami Frank
: Re: passaggio parametri tra componenti
: napo 04 Dec 2006, 17:28:23
Inoltre esiste una funzione di joomla che mi ritorni l'indirizzo del componente in esecuzione? (es. http://localhost/joomla/index.php?option=com_prova1&Itemid=55)

Nessuna funzione.
Il nome del componente sta nella variabile di sistema $option.

e l'indirizzo di chi ha lanciato il componente? (es. http://localhost/joomla/index.php?option=com_prova0&Itemid=50
o http://localhost/joomla/index.php)

Per questo mi sa che ti devi portare dietro un parametro.

Per la funzione MosGetParam esiste da qualche parte documentazione  da cui si capisca quali sono i parametri che devono essere passati e i relativi risultati ottenuti?

mixed mosGetParam(array &$arr, string $name [, mixed $default=null [, int $mask=0 ]]);

: Re: passaggio parametri tra componenti
: franklg 04 Dec 2006, 17:59:53
Ti ringrazio, sei stato molto chiaro come di solito.
Alla prossima, saluti Frank