Back to top

Autore Topic: [RISOLTO] Reperire dati da due forms in un nuovo componente  (Letto 3190 volte)

Offline montagne.rocciose

  • Nuovo arrivato
  • *
  • Post: 35
    • Mostra profilo
Salve a tutti,
complimenti per il forum :) Premetto che per il problema che sto' per descrivere ho cercato se gia' qualcuno aveva postato qualcosa del genere ma purtropppo non ho trovato nulla, per cui...
Debbo realizzare un componente stile MVC su una piattaforma con joomla 1.7 che presenta, lato side, una pagina (site/views/com_.../tmpl/default.php) che contiene 2 e più forms per l'inserimento dei dati. Ogni form ha il suo pulsantino che attiva il controller per l'inserimento dei dati presenti nella propria form. E fin qui tutto ok. Il problema viene ora. Quando inserisco dei dati nella form 02 e premo il relativo pulsante richiamo l'apposita funzione del controller questa prende i dati e li mette nella form 01. A me serve pero' accodare tali dati nella form 01 e non sostituirli.
In altre parole debbo poter prendere il contenuto dei campii della form 01 quando premo il pulsante della form 02. E' possibile far cio'?
Grazie a tuttti.
« Ultima modifica: 26 Set 2012, 13:47:20 da montagne.rocciose »

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Reperire dati da due forms in un nuovo componente
« Risposta #1 il: 25 Set 2012, 17:57:23 »
E un po ingarbugliato come ragionamento.
Cosa intendi per accodarli?
Cioe tu hai la form 1 che ha ad esempio il campo xxx e ci inserisco zzz

La form due che ha il campo yyy e ci inserisco www che va a modificare il campo xxx in zzz www ?
Forse e meglio se provi a  spiegare cosa vuoi realizzare.
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline montagne.rocciose

  • Nuovo arrivato
  • *
  • Post: 35
    • Mostra profilo
Re:Reperire dati da due forms in un nuovo componente
« Risposta #2 il: 25 Set 2012, 18:39:51 »
Ciao simone83,
innanzitutto grazie per l'interessamento :) Si è esatto ciò che dici. Infatti io ho, nella stessa pagina, 2 forms. La prima si chiama admin, la seconda send.
Nella form admin vi è un campo annotazioni, nella form send vi è un campo 'A'.
Quando nella form send, viene premuto il tasto Ok, il contenuto del campo 'A' deve essere accodato al contenuto del campo 'annotazioni' che è nella form 'admin'.
Tutto questo ovviamente avviene nella funzione 'task()' che si trova nel controller.
Ora: come faccio dalla funzione 'task()' a prendere i dati dalla form 'admin', se con la funzione getVar() posso prendere solo i dati dalla form che ha richiamato?

Spero di essere stato più chiaro... :)
Grazie.

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Reperire dati da due forms in un nuovo componente
« Risposta #3 il: 25 Set 2012, 19:25:16 »
Semplice, non puoi, sono du post differenti, ma puoi salvare in sessione i dati che hai inviato precedentemente.

se cerchi nel codice vedrai questa sintassi mille volte nei controller quando si processano le form, è il meccanismo di salvataggio dei dati inseriti quando la form ha degli errori.

Innanzitutto ti crei una variabile application

$app=JFactory::getApplication();

dopodiche all'invio della form 1 se i dati sono corretti te li salvi cosi

$app->setUserState('com_xxx.form1.data', $requestData);

dove requestData è l'array associativo dei valori ricavari dalla form 1

dopodiche all'invio della form 2 puoi leggere i dati richiamando

$app->getUserState('com_xxx.form1.data', array());

ricorda di svuotare la sessione quando hai terminato il processo xche senno te li ritroveresti la volta dopo.

la sessione si svuta cosi

$app->setUserState('com_xxx.form1.data', array());

spero di esserti stato di aiuto







BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline montagne.rocciose

  • Nuovo arrivato
  • *
  • Post: 35
    • Mostra profilo
Re:Reperire dati da due forms in un nuovo componente
« Risposta #4 il: 26 Set 2012, 12:51:30 »
Ciao Simone83,
ancora grazie per la risposta. Scusa se posso leggerla solo ora. Hai ragione a dire che è una cosa complessa ma credo possibile, magari seguendo srade che possimo non aver considerato. Per quanto riguarda la soluzione che hai proposto la provo subito, nel post-event della form 'send'.
Nella soluzione da te proposta dici "dopodiche all'invio della form 1 se i dati sono corretti te li salvi cosi...", si, è una soluzione valida ma solo nel caso in cui io premo il tasto di conferma della form 'admin'?
Cio' perchè succede proprio il contrario. Tale pulsante è solitamente l'ultimo ad essere premuto, prima viene premuto il pulsante che avvia il post per la form 'send'.
Grazie per l'aiuto,

Offline montagne.rocciose

  • Nuovo arrivato
  • *
  • Post: 35
    • Mostra profilo
Re:[RISOLTO] Reperire dati da due forms in un nuovo componente
« Risposta #5 il: 26 Set 2012, 13:53:26 »
Ciao,
il problema è stato risolto in una maniera direi banale. E' stato infatti sufficiente aggiungere una funzione in javascript all'inizio del file default.php e nella form 'send' il richiamo alla stessa:

onsubmit="return fTrasf();"
----------------------------------------------
la funzione è abbastanza semplice...


<script type="text/javascript">
    function fTrasf()
    {

        if (document.adminForm1.testo_preventivo.va lue != ""){
            document.sendData1.testo_preventivo.val ue = document.adminForm1.testo_preventivo.va lue ;
            //alert(document.adminForm1.testo_preventivo.va lue);
            return true;
        }
    }
 
</script>

Essa infatti non fa altro che controllare il contenuto del campo 'testo_preventivo'. Se c'è qualcosa allora copia il suo contenuto nel campo hidden che ha lo stesso nome ma si trova nella form 'send'. Una cosa direi abbastanza semplice. L'ispirazione mi è venuta grazie al suggerimento di Simone83 e alla osservazione del codice. Lo so, non è il metodo più pulito ma almeno è già qualcosa.... :)
Grazie e spero che ciò possa essere utile anche ad altri.
Ciao.

mau_develop

  • Visitatore
Re:[RISOLTO] Reperire dati da due forms in un nuovo componente
« Risposta #6 il: 26 Set 2012, 17:14:13 »
 Se c'è qualcosa
-------------------------
...qualcosa cosa spero tu lo verifichi prima di inserirlo nell'esecuzione...

M

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:[RISOLTO] Reperire dati da due forms in un nuovo componente
« Risposta #7 il: 26 Set 2012, 17:35:51 »
Citazione
Tale pulsante è solitamente l'ultimo ad essere premuto, prima viene premuto il pulsante che avvia il post per la form 'send'.

E se viene premuto prima che succede?  :)

Se ti funziona tanto meglio ma se devo essere sincero non mi convince come soluzione, ma poi se devi prendere un dato da una form e metterlo nell'altra non è che puo stare di suo nell'altra form?

BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline montagne.rocciose

  • Nuovo arrivato
  • *
  • Post: 35
    • Mostra profilo
Re:[RISOLTO] Reperire dati da due forms in un nuovo componente
« Risposta #8 il: 27 Set 2012, 10:16:02 »
Ciao,
per mau_develop:
il controllo e la validità del campo non sono ancora implementate. Tale campo è un textarea che dovrebbe raccogliere delle annotazioni, per cui se hai qualche suggerimento è ben accetto. :)

per simone83:
hai ragione questa non è certo la soluzione più adeguata, ve ne saranno sicuramente delle migliori, magari completamente in php, però a me serviva qualcosa di veloce che facesse al caso :) Per quanto riguarda i pulsanti, secondo la tua osservazione, se venisse premuto il pulsante che avvia il post della admin allora viene effettuato il controllo sulla presenza e validità dei campi e poichè non è presente nulla nel campo delle annotazioni (o richieste che sia) - ciò perchè la form send non è stata mai usata - non succede nulla perchè gli altri campi della form admin saranno stati opportunamente compilati per poter andare avanti.
Faccio presente che se avete una soluzione migliore della mia essa è sempre benaccetta... :)
Ciao,


 



Web Design Bolzano Kreatif