Joomla.it Forum
Non solo Joomla... => Sviluppo => : devillino 21 May 2013, 08:22:15
-
ciao ragazzi buongiorno :)
volevo chiedervi una info per capire come poter passare una variabile all'interno del mio sito; vi spiego un po meglio lo scenario:
ho il mio bel sito joomla a cui ho aggiunto un modulo fatto da me; questo modulo non fa altro che settare una variabile di sessione e richiamare una piccola applicazione in javascript (un prototipo di chat) questa applicazione non ha nulla a che fare con l'mwc di joomla quindi ho pensato che l'unica possibilità fosse fare in questo modo
$session =& JFactory::getSession();
$session->set('username', $user->username );
e richiamarla poi successivamente tramite l'array ( nello specifico $_session['username'] ).
nello script in cui richiamo la variabile, non ho aperto la sessione in quanto penso che dovrebbe gia essere aperta da joomla e utilizzare sempre quella (almeno spero, altrimenti il problema è proprio questo: il sito fa riferimento alla sessione joomla e la mia applicazione ad un'altra sessione)?
grazie per l'attenzione ciao
-
scusa ma se la tua app è js che sessione vuoi che apra o usi??
se js vuole usare le sessioni deve usare ajax e "comunicare" col php
-
esatto la mia applicazione comunica tramite ajax e chiamate post a uno script php interna al mio spazio web ma esterna al sito joomla (scusate non l'ho scritto prima)
-
e perchè devi passargli qualcosa da una sessione? non puoi passarglielo dalla richiesta?
-
perchè era la cosa più rapida per me passare la variabile username dal modulo tramite sessione anzichè passare tramite la richiesta post/ajax (in realtà ci ho anche provato ma mi dava un po di errori e non ci sono riuscito :( )
dalla tua risposta deduco che devo capire l'errore e risolverlo (per avere una soluzione più pulita) senza girare il problema?
-
mi sto anch'io documentando sulle sessioni di joomla
nel recupero della variabile ti sei confuso per nulla
per scrivere
$session =& JFactory::getSession();
$session->set('username', $user->username );
per legggere
$session =& JFactory::getSession();
echo 'username = ' . $session->get('username');
$_session['username'] non funziona perchè joomla crea delle sottchiavi dentro $_session
-
il problema sta nel fatto che l'applicazione php/ajax non sta sotto il controllo mwc di joomla quindi non posso usare i metodi joomla nello sript php....ma è possibile in qualche modo risalire alle variabili di sessione di joomla? altrimenti devo capire come passare i parametri attraverso le chiamate ajax/post :(
-
il problema sta nel fatto che l'applicazione php/ajax non sta sotto il controllo mwc di joomla
puoi fare in modo che lo sia, ma per il momento va bene così
è possibile in qualche modo risalire alle variabili di sessione di joomla?
var_dump($_SESSION)
e vedi la struttura con cui joomla scrive le variabili in sessione
ma se la tua applicazione " non sta sotto il controllo mwc di joomla " puoi accedere alle variabili di sessione di joomla? In questo momento mi viene il dubbio ...
In caso negativo usa $_SESSION[] nella maniera tradizionale sia per scrivere che per leggere
:o
-
ciao ragazzi
sono riuscito a risolvere ...tramite firebug sono riuscito a fare un minimo di debug per poter controllare alcuni errori, ho cmq usato i metodi ajax/post usando le variabili di sessione non riuscivo a gestire correttamente il flusso :( va bhe grazie di tutto :)
ragazzi ultima domanda legata a questo argomento ...utilizzando il metodo ajax lo script invece di rispondermi con le uniche istruzioni echo settate all'interno dello script; mi restituisce nella risposta la pagina formattata col template....vedendo sul forum ho trovato che giustamente è jommla che provvede a farlo e si può cambiare questo comportamento utilizzando il metodo
JFactory::getApplication()->close() però utilizzando quest'ultimo non mi cambia nulla quale potrebbe essere l'errore? :(
-
ciao ragazzi
mi sono documentato un po in effetti non riesco ad usare il metodo close() detto in precedenza perchè non appartiene al MWC di joomla ...documentandomi sul forum ho trovato che si può accedere al MWC grazie al seguente codice
define( '_JEXEC', 1 );
define('JPATH_BASE', "../" );
define( 'DS', DIRECTORY_SEPARATOR );
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
require('libraries/joomla/factory.php');
global $mainframe;
// initialize the application
$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();
$mainframe->close();
il problema è che questo codice continua a restituirmi il template del sito e non la risposta JSON che mi aspettavo :( cosa potrebbe essere???
Grazie
-
il metodo close non è altro che un exit che interrompe l'esecuzione.
Sei sicuro che arrivi in questa pagina la tua richiesta?
-
ho trovato che giustamente è jommla che provvede a farlo e si può cambiare questo comportamento utilizzando il metodo
-------------------------------------------------------------------------------
no
close come dice simone ti chiude l'app... prova a guardare come usa nel template il saveOrderAjax e capisci perchè non gli torna il template... una volta era la view raw... ora....
$saveOrderingUrl = 'index.php?option=com_weblinks&task=weblinks.saveOrderAjax&tmpl=component';
PS: MWC sono me ... mvc il pattern joomla :)
-
MWC ;D ops!! ihihaiha ho fatto un po di confusione :P
ma nel mio script php ho inserito le exit() a mano io, però come risposta alla richiesta ajax mi ritorna l'intera template joomla e non la singola risposta che mi aspettavo dal mio script :(
in pratica io facevo così dopo aver fatto le varie interrogazioni al db
header('Content-type: application/json');
?>
{
"utente": "<?php echo $_GET['from'];?>",
"items": [
<?php echo $items;?>
]
}
<?php
exit(0);
}
ho provato a togliere la exit e sostituirla con la $mainframe->close(); prendendo i riferimenti all'applicazione come detto prima però il risultato non cambia :( ho provato a settare forma=raw nella richiesta ma nemmeno ...
nell'indirizzo che mi hai dato mwc non saprei come usarlo perchè io richiamo questi script tramite un js richiamato da un modulo dovrei sostituire quello??
-
&tmpl=component
-
forse sbagliavo il collegamento allo script php ...anche se mi sembra strano in quanto con firebug mi dava codice 200 alla richiesta :S boh faccio un po di prove e vi faccio sapere :) speriamo bene :)
L'unica nota che sto controllando sembra che su chrome non funzioni bene ....indagherò anche su quello :)
[allegato eliminato automaticamente dopo un anno]
-
echo $json_response;
die(1);