Joomla.it Forum
Non solo Joomla... => Sviluppo => : lucsound 25 Feb 2014, 00:22:46
-
Ciao.
Ho bisogno di determinare l'id di un utente online nel sito in un file php di un componente.
Questo file si trova nella cartella administrator e gestisce i salvataggi dei file.
Ho provato con:
$utente = JFactory::getUser(); // in base utente collegato
$utenteusername = $utente->get('username');
$utenteid = $utente->get('id');
inserendo questo codice all'interno del file php che salva i file ma purtroppo non funziona.
in altri file php del mio template funziona benissimo ma in questo file lato amministrativo no.
Come posso fare?? :o :(
-
domanda ignorante: a che ti serve?
-
Perché voglio impostare il salvataggio di un file in una cartella che Contiene l id dell utente collegato.
Senza quella variabile non funzionano bene le modifiche che ho fatto al componente.
Qualche soluzione??
-
nessuno può aiutarmi?
:( :( :(
-
Non è che sia molto chiaro quello che hai fatto.
Hai sviluppato un componente?
Questo file php che ti dovrebbe salvare dove si trova di preciso? Come lo richiami?
Perche parli di componente e poi di template?
Le tre righe che hai scritto sono giuste, ma dipendono dal contesto in cui si trovano
-
Il componente non é stato creato da me. Si tratta di un componente per annunci.
Il file.in questione si trova nella cartella administrator e viene richiamato per il salvataggio delle info.
Li io voglio inserire quella variabile in base all utente collegato ma non funziona.
Con template volevo indicare che quell codice funziona su tutti i file dove l ho provato ma non su quel file importante.
Devo inserire altro codice per farlo funzionare??
-
Si ok, come viene richiamato?
ha provato a mettere un echo sui dati e poi un die per vedere se viene realmente eseguito.
Puo anche essere che sei uscito da joomla e sia un php a se.
Come ti ho gia detto in un contesto adeguato quelle 3 righe sono giuste, ma non è che solo quelle ti fanno tutto. Dopo c'e da salvare i dati e quelli non si sa come li salva
E' come cercare un ago in un pagliaio per un'altro utente. Ma parti dal presupposto che il problema non sta in quelle 3 righe
-
Cerco di spiegare meglio.
Il componente è ads manager. L'utente entra nel sito, inserisce i dati e conferma.
Viene attivato il file contents.php che si trova dentro la cartella administrator. Questo file gestisce i salvataggi in base alla tipologia di input. Per le immagini il percorso dovrebbe essere legato in base all'utente online nel portale che ha inserito l'annuncio.
Attualmente la variabil per il salvataggio è l'user id salvato dal componente nel database; questo funziona bene ma solo se l'utente va a modificare l'annuncio, perchè se lo crea da zero naturalmente l'id utente salvato nel database non esiste.
Io vorrei invece sostituire quella variabile con l'utente collegato, così da farlo funzionare praticamente sempre.
C'è qualche soluzione? :(
-
non ho mai usato questo componente, ma l'ho scricato ed usa il mvc bene, prova a guardarti il file content.php nella cartella tables nell'admin, sicuramente troverai li dove andare amodificare
-
Si il file l ho modificato ma non riconosce quelle 3 righe di codice importanti per l id user collegato.
Non so proprio cone risolvere.
-
Che funzione hai modificato e come
-
$utente = JFactory::getUser(); // in base utente collegato
$utenteusername = $utente->get('username');
$utenteid = $utente->get('id');
[...]in altri file php del mio template funziona benissimo ma in questo file lato amministrativo no.
Funziona davvero?
Io di solito uso:$utente = JFactory::getUser();
echo 'ID : ' . $utente->id . '<br />';
echo 'User name: ' . $utente->username . '<br />';
echo 'Nome: ' . $utente->name . '<br />';
-
Certo che funziona, ed è anche l'approccio migliore, evita che si generino errori nell'accedere a proprieta che non esistono.
Deriva da JObject
public function get($property, $default = null)
{
if (isset($this->$property))
{
return $this->$property;
}
return $default;
}
Ed è la stessa cosa di fare $utente->username ecc
-
Ho provato ad inserire anche la seconda variante, $utente->id, ma purtroppo non funziona.
Aiuto.. :(
-
come ti ha suggerito simone83:
$utente = JFactory::getUser();
print_r($utente);
die();
e vedi che cosa succede, se non succede niente è facile che il codice non sia eseguito.
ciao
-
Putroppo non va.
Ho definito $utente = JFactory::getUser();
e nel percorso per il salvataggio del file print_r($utente);
Ma no va..
-
se il die() non blocca l'esecuzione del programma vuol dire che il flusso non passa da lì....
non è che per caso sai usare un debugger?
ciao
-
Se inserisco il die mi genera un errore nella fase di salvataggio.
Per questo l ho tolto ma.non va purtroppo...
-
il die non ti genera di certo errore ti blocca solo l'esecuzione. Se te la blocca e vedi che c'e un errore nel salvataggio all'ora hai gia ottenuto qualcosa vuol dire che hai sbagliato ma purtroppo noi ti possiamo aiutare fino ad un certo punto
-
Mi blocca l esecuzione. Credo che non risolverò mai
-
bene vuole dire che passa di li, in quale file e funzione lo hai inserito?
-
il file è sempre quello, contents.php.
All'interno di:
class AdsmanagerTableContents extends JTable{
la funzione è:
function bindContent($post,$files,$conf,$model,$plugins) {ecc
all'interno del ciclo for dove vengono definiti i vari campi e la loro tipologia
foreach($fields as $field) { ecc
-
ok, dove hai provato a mettere quelle 3 righe che avevi scritto ll'inizio? e come le stavi provando ad utilizzare
-
le mie tre righe cioè:
$utente = JFactory::getUser(); // in base utente collegato
$utenteusername = $utente->get('username');
$utenteid = $utente->id;
le ho inserite all'inzio del file.
Poi all'interno di
else if ($field->type == "file") {
ho aggiunto un altro if per selezionare un determinato campo
if ($field->name == "nomemiocampofile") {
e all'interno del percorso del file di salvataggio ho richiamato la variabile $utenteid
-
non è che quelle righe si trovano al di fuori del metodo che le usa?
se hai definito la variabile al di fuori del metodo devi definirla come proprietà della classe ($this->utente) per potervi accedere al di fuori dell'ambito in cui è definita, se la hai definita al di fuori della classe non puoi accedervi...
ciao,
marco
-
Ho fatto le modifiche con $this->utente e non funziona.
Ho inserito le tre righe dentro if ($field->name == "nomemiocampofile") {
e non funziona nemmeno
-
ovviamente $this->utente era solo l'indicazione del formato di una proprietà, non una formula magica, quindi andava dichiarato ed inizializzato prima di poter essere usato.
mi sembra strano che il codice di recupero utente non funzioni all'interno di una classe nel framework di joomla.
scusa la domanda molto diretta, ma hai una minima idea di che cosa stai facendo o stai andando assolutamente a caso?
ovvero hai qualche conoscenza di programmazione?
ciao
-
Ragazzi ho risolto. Dopo posterò la soluzione
-
Ho risolto con...
$utente = JFactory::getUser(); // in base utente collegato
$utenteusername = $utente->get('username');
$utenteid = (int) $utente->get('id');
Navigando tra i vari file php dell'amministrazione ho visto come l'id user veniva richiamato in questo modo e con una piccola modifica ho risolto!
-
non c'è alcuna differenza tra questo codice e quello postato all'inizio a parte il fatto che $utenteid ora è un intero invece che, probabilmente, una stringa, e se l'id ti serve per il nome della directory devi effettuare nuovamente il cast a stringa.
l'errore era, a mio avviso, da un'altra parte.
ciao