Back to top

Autore Topic: Passaggio dati da Form a pagina in wrapper  (Letto 7794 volte)

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Passaggio dati da Form a pagina in wrapper
« il: 16 Giu 2012, 11:15:30 »
Ciao a tutti.
Ho un piccolo problema in un modulo per Joomla 2.5 in cui è presente un form con metodo post, action="index.php?option=com_wrapper&view=wrapper&Itemid=153".


Questo link è in realtà il link di una voce di menu di tipo wrapper la cui url punta a http://localhost/miosito/test.php
Il menu è attivo ed è collegato ad un modulo pubblicato in modo che non sia visibile su nessuna pagina


Nel file test.php visualizzo i campi del form:
Codice: [Seleziona]
echo "POST <br>";

echo $_POST["checkin"];
echo "<br>";
echo $_POST["checkout"];
echo "<br>";
echo $_POST["ncamere"];
echo "<br>";
echo $_POST["npersone"];
echo "<br>";
echo $_POST["lang"];
echo "<br>";

Quando invio i dati del form il file test.php non mi visualizza nulla.


Se invece nel form metto action="http://localhost/miosito/test.php" mi vengono visualizzati i dati che sono stati inseriti nei campi del form (checkin, checkout, ecc.)


E' evidente che nell'uso del wrapper di Joomla qualcosa non passa.


Idee? Proposte? Pinzellacchere?  ;D


Per inciso, il tutto funziona benissimo su Joomla 1.5  :P


Ciao
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

mau_develop

  • Visitatore
Re:Passaggio dati da Form a pagina in wrapper
« Risposta #1 il: 16 Giu 2012, 14:47:14 »
solitamente un wrapper, ovvero un frame, ospita codice che si esegue su un altro server o in modo autonomo sullo stesso server, non puoi passargli dati.
Quando lo fai sullo stesso server si può ragionare su qualche "accrocchio" da fare ma resta pur sempre una cosa che nn si fa.

Il menu è attivo ed è collegato ad un modulo pubblicato in modo che non sia visibile su nessuna pagina
----------------------------------------------------
non puoi fare in modo di inserire il modulo in un articolo con loadModules... non credo serva sia pubblicato il modulo...ma magari sbaglio, e cmq credo sia la strada percorribile in quanto i questo caso puoi passare parametri.

perchè fai il wrapper? cosa ti costringe?

M.

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Passaggio dati da Form a pagina in wrapper
« Risposta #2 il: 17 Giu 2012, 21:20:10 »
Ciao mau_develop.
Grazie. Speravo rispondessi tu  ;D


solitamente un wrapper, ovvero un frame, ospita codice che si esegue su un altro server
----------------------------------------------------
avevo sospettato una cosa del genere quando ho usato il mio modulo su una replica del sito in locale ma con un link nella voce di menu di tipo wrapper che puntava alle pagine sul server remoto. Li il mio modulo funzionava e i dati del form passavano all'altra pagina. Quello che non mi spiego è come mai con J 1.5 invece funzionava tutto anche sullo stesso server. Boh, forse è solo impressione mia...




non puoi fare in modo di inserire il modulo in un articolo con loadModules... non credo serva sia pubblicato il modulo...ma magari sbaglio, e cmq credo sia la strada percorribile in quanto i questo caso puoi passare parametri.
-------------------------------------------------
Se parliamo del modulo di tipo menu collegato alla voce di menu di tipo wrapper credo anche io non serva proprio a nulla.


Questa soluzione della voce di menu collegata ad un modulo non visibile in nessuna pagina l'ho trovata usando google. E' bello però non ricordarsi neanche le parole usate per la ricerca, figurati la pagina da cui ho estrapolato la soluzione.... :-\  Perchè la cosa non era limitata a questo.


Credo che come accrocchio si potrebbe pensare a passare i parametri direttamente nel link che porta alla pagina esterna a Joomla (ma sullo stesso server) oppure usando un cookie.
Però vorrei trovare una soluzione che non mi costringa a modificare il codice delle pagine chiamate dell'iFrame, non è codice fatto da me (e io odio mettere le mani nel lavoro degli altri) e se poi non funzionano quelle pagine è ancora peggio.


Il modulo che sto realizzando deve essere visibile in tutte le pagine e l'ho inserito in un container div in posizione assoluta al footer della pagina. Così anche scrollando la pagina il modulo è sempre visibile (non mi piace ma mi hanno chiesto di farlo così).


perchè fai il wrapper? cosa ti costringe?
---------------------------------------------------
Il wrapper? mi serve per visualizzare delle pagine che non appartengono al sito e fanno parte di un sistema di gestione di prenotazione camere che devo usare così come me lo hanno dato. Essendo pagine esterne al sito posso solo visualizzarle in un iFrame per mantenere l'aspetto della pagina visualizzando ste pagine.


Domani è un altro giorno, vedremo.... ::)


Grazie di tutto.

Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

mau_develop

  • Visitatore
Re:Passaggio dati da Form a pagina in wrapper
« Risposta #3 il: 17 Giu 2012, 22:00:51 »
mi serve per visualizzare delle pagine che non appartengono al sito e fanno parte di un sistema di gestione di prenotazione camere che devo usare così come me lo hanno dato.
------------------------------------------------------------------------
... la vedo male... cioè riesci a fare ciò che la pagina che sta in quel iframe fa fare... o meglio...

l'unico modo sarebbe di chiamare quella pagina con delle get ... ma tu mi parli di form... quindi probabilmente post.

mmmhh e se tu facessi un modulo a cui puoi passare dei dati e quel modulo chiudesse tra tag iframe la risposta di una chiamata post curl?

guarda qui: http://www.php.net/manual/pl/function.curl-setopt-array.php#89850

ha l'ancora dovrebbe apparirti ciò che intendo.

M.

poi se funziona aspetta a gioire se riesci ad abusare tu perchè non un altro? :):)
« Ultima modifica: 17 Giu 2012, 22:17:05 da mau_develop »

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Passaggio dati da Form a pagina in wrapper
« Risposta #4 il: 18 Giu 2012, 15:46:33 »
Avevo postato una soluzione prima di averla testata a fondo.

Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Passaggio dati da Form a pagina in wrapper
« Risposta #5 il: 19 Giu 2012, 11:08:23 »

Avrei trovato una soluzione ma mi vergogno pure a postarla ::)


Come premessa direi che bisogna capire come funziona il componente com_wrapper di Joomla.
La voce di menu di tipo wrapper può essere usata con l'url:
Codice: [Seleziona]
index.php?option=com_wrapper&view=wrapper&Itemid=153
dove il valore 153 è l'id della voce di menu stessa. Questo consente di sfruttare i parametri impostati nella voce di menu (larghezza, altezza dell'iFrame, ecc.)


Nella voce di menu viene impostato il parametro url che contiene l'indirizzo e il nome della pagina che dovrà essere caricata nell'iFrame.


Visto che il wrapper di Joomla non permette di utilizzare direttamente le variabili provenienti da un form bisogna riuscire ad accodare questi parametri al parametro url della voce di menu wrapper.


In realtà la mia soluzione sostituisce totalmente il valore del parametro url della voce di menu di tipo wrapper con una url costruita via codice.


Il tutto si "riduce" a due passaggi:


1) override del componente com_wrapper
Nella cartella html del template creare le cartelle com_wrapper/wrapper e dentro questa copiare il file  components/com_wrapper/views/wrapper/tmpl/default.php.
Modificare il file default.php aggiungendo il seguente codice dopo l'istruzione defined('_JEXEC') or die;
Codice: [Seleziona]
   if (JRequest::getVar('url_wrapp',"") == ""){
      $url=$this->escape($this->params->get('url'));
   }else{
   
      $checkin=JRequest::getVar("checkin");   
      $url=JRequest::getVar("url_wrapp")."?checkin=".$checkin."&checkout=".JRequest::getVar("checkout")."&npersone=".JRequest::getVar("npersone")."&ncamere=".JRequest::getVar("ncamere")."&lang=".JRequest::getVar("lang");
   
   }
In questo modo sarà possibile passare il parametro url_wrapp che contiene l'url da passare quando si chiama il componente com_wrapper.


2) Nel mio modulo ho incluso un file che ho chiamato redir.php, prima di visualizzare il codice html del form, il cui codice è il seguente:
Codice: [Seleziona]
defined( '_JEXEC' ) or die( 'Restricted index access' );

if(isset($_POST['verifica']))
{
      // recupera le variabili dal form
      $checkin=JRequest::getVar('checkin');
      $checkout=JRequest::getVar('checkout');
      $npersone=JRequest::getVar('npersone');
      $ncamere=JRequest::getVar('ncamere');
      $lang=JRequest::getVar('lang');

      // crea l'url corrispondente alla voce di menu di tipo wrapper
      $url=JURI::base()."index.php?option=com_wrapper&view=wrapper&Itemid=153";
     
      // crea l'url da passare alla voce di menu du tipo wrapper come url di destinazione e gli accoda i parametri
      // da passare alla pagina php chiamata (pren_step1.php) che li processerà al suo interno
      $url_wrapper="&url_wrapp=".JURI::base()."booking/site/pren_step1.php&checkin=$checkin&checkout=$checkout&ncamere=$ncamere&npersone=$npersone&lang=$lang";
     
      // esegue il redirect usando le due url
      header("location: ".$url.$url_wrapper);
      exit;
}

//  questa funzione viene richiamata nell'action del form del modulo 
function stayThere(){
   $cururl_sendform = JRequest::getURI();
   if(($pos = strpos($cururl_sendform, "index.php"))!== false)
   {
      $cururl_sendform = substr($cururl_sendform,$pos);
   }
   $cururl_sendform = JRoute::_($cururl_sendform);
   return $cururl_sendform;
}

In questo modo uso sempre la voce di menu di tipo wrapper (Itemid=153) che contiene i parametri di formattazione dell'iFrame ma riesco a bypassare l'url impostata nei parametri della voce di menu gestendola io e accondando i parametri che la pagina di destinazione deve ricevere.


UNICO PROBLEMA
Nella barra degli indirizzi del browser viene fuori una url tipo questa:
Codice: [Seleziona]
http://localhost/miosito/index.php?option=com_wrapper&view=wrapper&Itemid=153&url_wrapp=http://localhost/miosito/booking/site/pren_step1.php&checkin=18/06/2012&checkout=19/06/2012&ncamere=1&npersone=2&lang=it


Come dicevi? ACCROCCHIO!!


PS
Come calendario popup avevo provato ad usare quello nativo di Joomla ma non so perchè mi restituiva le date senza slash.
Questo calendario ha le stesse funzionalità ma è molto più completo e non si incasina con mootools e ammennicoli javascript vari.
« Ultima modifica: 19 Giu 2012, 11:09:55 da bigham »
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

Offline bigham

  • Global Moderator
  • Instancabile
  • ********
  • Post: 3662
  • Sesso: Maschio
  • Contagiato dalla Joomlaite :)
    • Mostra profilo
Re:Passaggio dati da Form a pagina in wrapper
« Risposta #6 il: 19 Giu 2012, 11:11:52 »
Grazie mau_develop  ;D ;D


E non dire che non hai fatto/detto nulla di utile perchè non è vero. A volte bastano poche parole per far mettere in funzione le rotelline (quando uno le vuole far funzionare ovviamente)  ;D
Ci sono più cose in cielo e in terra, Orazio, di quante ne sogni la tua filosofia.

mau_develop

  • Visitatore
Re:Passaggio dati da Form a pagina in wrapper
« Risposta #7 il: 19 Giu 2012, 15:56:20 »
mmhhh credo tu abbia fatto più o meno la stessa cosa che dicevo io tranne il "proxi", hai preferito l'header.location.

Così su due piedi non saprei dirti il meglio o peggio.

..filtra bene quelle getvar altrimenti sono guai

M.

 



Web Design Bolzano Kreatif