Back to top

Autore Topic: [Risolto] Recuperare dati da $array['params']  (Letto 3078 volte)

Offline Kumidan

  • Nuovo arrivato
  • *
  • Post: 31
    • Mostra profilo
[Risolto] Recuperare dati da $array['params']
« il: 26 Ago 2011, 18:53:11 »
Nel backend del mio componente si possono inserire dei nuovi elementi in alcune tabelle.
Per una di queste, mentre si effettua il salvataggio, quindi all'inizio della funzione bind() devo leggere i valori che arrivano, ma non riesco a farlo.

Suppongo debba leggerli dalla variabile $array, ma come leggo i file da lì?

Ad esempio uno dei campi della form che si compila per inserire una nuova entry si chiama "name", ho provato sia a leggere $array['params'][''name'] che $array['name'], ma in nessun caso ho ottenuto il valore che cerco.

Ho anche provato ad usare la variabile $registry, ma senza ottenere nulla.

Come leggo i valori che stanno per essere salvati nel db?
« Ultima modifica: 29 Ago 2011, 22:12:50 da Kumidan »

mau_develop

  • Visitatore
Re:Recuperare dati da $array['params']
« Risposta #1 il: 26 Ago 2011, 19:20:41 »
non devi leggere nulla, passi il post al bind e il check lo fai.... nel check

M.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Recuperare dati da $array['params']
« Risposta #2 il: 26 Ago 2011, 22:01:52 »
in effetti 'passi il post al bind' è un poco criptico.

Codice: [Seleziona]
$row =& $this->getTable();
$data = JRequest::get( 'post' );
$data['id'] = JRequest::getVar('id', '', 'post', 'int');
// altri checks
if(!$row->bind($data){
  //gestione errore
};

la prima riga associa il dati ricevuti all'array, la seconda forza il field 'id' ad un intero: questo è un controllo che devi fare per verificare che cosa viene inserito in ogni campo (per evitare sql injection).
l'ultima riga salva nel db.

io personalmente preferisco inserire i controlli di sicurezza direttamente dentro il metodo store(), mentre nel check() inserisco quelli di coerenza delle informazioni.

ps: ma quelle variabili da dove saltano fuori?

ciao,
marco
« Ultima modifica: 26 Ago 2011, 22:06:13 da mmleoni »
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline Alhazred

  • Appassionato
  • ***
  • Post: 289
    • Mostra profilo
Re:Recuperare dati da $array['params']
« Risposta #3 il: 27 Ago 2011, 17:50:14 »
edit

Offline Kumidan

  • Nuovo arrivato
  • *
  • Post: 31
    • Mostra profilo
Re:Recuperare dati da $array['params']
« Risposta #4 il: 27 Ago 2011, 17:52:33 »
in effetti 'passi il post al bind' è un poco criptico.
[...]
Per le variabili pensavo fossero nomi standard, ma forse non lo sono. Il fatto è che ho usato un tool online per costruire lo scheletro del componente, non le ho scritte io quelle variabili.

All'interno del file /administrator/components/com_nomecomponente/tables/campoform.php ho sia la funzione bind() che la funzione check()
Codice: [Seleziona]
    public function bind($array, $ignore = '')
    {
        if (isset($array['params']) && is_array($array['params'])) {
            $registry = new JRegistry();
            $registry->loadArray($array['params']);
            $array['params'] = (string)$registry;
        }

        if (isset($array['metadata']) && is_array($array['metadata'])) {
            $registry = new JRegistry();
            $registry->loadArray($array['metadata']);
            $array['metadata'] = (string)$registry;
        }
        return parent::bind($array, $ignore);
    }

    /**
    * Overloaded check function
    */
    public function check() {

        //If there is an ordering column and this is a new row then get the next ordering value
        if (property_exists($this, 'ordering') && $this->id == 0) {
            $this->ordering = self::getNextOrder();
        }
       
        return parent::check();
    }
Il codice che mi hai scritto devo usarlo dentro la funzione check(), giusto?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Recuperare dati da $array['params']
« Risposta #5 il: 27 Ago 2011, 19:18:05 »
all'interno del metodo bind(), e solo all'interno di questo, il valore dovrebbe essere in $array['name'], ma devi fare riferimento alla documentazione del tool, così è impossibile sapere dove sono ricevuti i dati passati alla funzione bind.

all'interno di check() il valore è in this->name, ti conviene agire qui.

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline Kumidan

  • Nuovo arrivato
  • *
  • Post: 31
    • Mostra profilo
Re:Recuperare dati da $array['params']
« Risposta #6 il: 27 Ago 2011, 19:44:23 »
Grazie, adesso riesco a gestire l'inserimento come volevo! :)

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Recuperare dati da $array['params']
« Risposta #7 il: 27 Ago 2011, 22:29:41 »
ricordati il [RISOLTO] nel titolo del post di apertura.
 ciao,
 marco
 
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

 



Web Design Bolzano Kreatif