Back to top

Autore Topic: passaggio parametri  (Letto 14564 volte)

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
passaggio parametri
« il: 18 Lug 2013, 11:18:29 »
Buongiorno a tutti! Vorrei sapere una cosa.
Ho una view con una tabella contenente un elenco di clienti e vorrei che al click del tasto NUOVO (o NEW) nella view che mi va a vedere che è una cosa tipo view=xxxx&layout=edit  mi portasse dietro alcuni parametri avendo un url del tipo view=xxx&layout=edit&id_persona=xxx&id_tipologia=xxx


Si può fare?


PS: dimenticavo, nella mia view dove ho questa tabella nella mia url ci sono già i parametri che mi servono e vorrei portarmeli dietro

[allegato eliminato automaticamente dopo un anno]
« Ultima modifica: 18 Lug 2013, 15:03:36 da grad »

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #1 il: 18 Lug 2013, 17:13:42 »
Per chi avesse il mio solito problema, ho trovato una soluzione.
Ho un po barato, ma funziona.
Praticamente nella view dove ho già i parametri me li metto dentro la sessione così:
$id_persona=JRequest::getCmd('id_persona');
$_SESSION['id_persona'] = $id_persona;


e poi nella view dove mi servono i parametri e non li posso recuperare basta fare così:
$id_persona = $_SESSION['id_persona'];

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #2 il: 19 Lug 2013, 00:10:44 »
Certo che te li puoi portare dietro, si puo fare tutto, tu hai una struttura mvc integrata di base ma si puo estendere e modificare. I bottoni che premi non sono altro che dei submit dei una form che richiamano determinate funzioni, ad esempio new ti richiama la funzione edit del controller che tu puoi modificare riscrivendola. Quindi se ti vuoi portare dietro id_persona non devi far altro che metterlo come campo hidden della form e al momento dell'invio te le troverai nella funzione edit del controller, se guardi le classi del core vedrai che la funzione edit fara un redirect al tuo layout edit, a questo redirect potrai aggingere questa variabile che ti serve per passarla alla view successiva




Comunque a tutti vi consiglio di guardarvi le classi del core per rendervi conto di cosa usate, non ci vuole nulla e molti dubbi sul funzionamento li risolve
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #3 il: 19 Lug 2013, 09:45:59 »
quindi tu dici di mettere campi hidden nel form xml? tipo così:


Codice: [Seleziona]


<?xml version="1.0" encoding="UTF-8"?>
<form addrulepath="/administrator/components/com_anagrafiche/models/rules">
<fieldset>
<field
name="id"
type="hidden"/>
<field
name="id_persona"
type="hidden"/>
<field
name="id_tipologia_socio"
type="hidden"/>
<field
name="id_servizio"
type="sql"
default=""
label="Seleziona un servizio"
query="SELECT cod_servizio, nome_servizio FROM #__elenco_servizi"
key_field="cod_servizio"
value_field="nome_servizio"/>
</fieldset>
</form>

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #4 il: 19 Lug 2013, 10:23:51 »
Sinceramente non capisco cosa stai facendo cosa sviluppi e non mi voglio mettere ad approfondire, a me dalla tua immagine sembrava una lista una lista non estende JmodelForm ma JmodelList un xml ti serve a ben poco, li puoi mettere a mano direttamente nella form
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #5 il: 19 Lug 2013, 10:39:46 »
quindi tu dici di mettere i campi hidden nella view dove ho la lista?

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #6 il: 19 Lug 2013, 10:59:29 »
e si, cosi quando invii la form invia anche quelle variabili, senno come faresti, ma come ti ho detto prima il solo aggiungere queste variabili non serve a niente, devi poi gestirle nella funzione del controller
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #7 il: 19 Lug 2013, 11:03:57 »
chiedo sin da ora scusa se non ho letto l'intera conversazione ma c'è una cosa che tengo a sconsigliare fortemente: mi riferisco al prelievo dei parametri tramite la variabile globale $_SESSION in quanto potrebbe generare contenuti imprevedibili. Se ad esempio il contenuto della variabile venisse usato per effettuare una query gli effetti potrebbero essere devastanti se un utente maligno tentasse di effettuare uan sqlinjection. Qualcuno più esperto di me potrà sicurametne confermarvi questa cosa e spiegarvi i dettagli.

Piuttosto è consigliabile quindi utilizzare la funzione getVar() in cui è possibile anche specificare da dove vengono prese queste variabili (POST, GET, cookie, ecc...)



edit: non ricordo comunque come viene generato l'indirizzo della view edit ma se le variabili fossero passate con get ti basterebbe stampare (nel controller?) il bottone con url index.php?option=tuocomponente?view=edit?variabile=<?php echo getVar(informazione); ?>
« Ultima modifica: 19 Lug 2013, 11:06:12 da giovi »

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #8 il: 19 Lug 2013, 11:08:12 »
e si, cosi quando invii la form invia anche quelle variabili, senno come faresti, ma come ti ho detto prima il solo aggiungere queste variabili non serve a niente, devi poi gestirle nella funzione del controller


Non saprei proprio come procedere... le variabili alla view dove ho la form arrivano, però quando poi clicco per inserire mi da questo errore:


Salvataggio fallito con il seguente errore: TableServizioassociatoaggiuntivo: :store fallito - Cannot add or update a child row: a foreign key constraint fails (`joomla_test`.`joomlatest_servizi_aggiuntivi`, CONSTRAINT `joomlatest_servizi_aggiuntivi_ibfk_1` FOREIGN KEY (`id_persona`) REFERENCES `joomlatest_anagrafiche_persone` (`id`) ON DELETE CASCADE) SQL=INSERT INTO `joomlatest_servizi_aggiuntivi` (`id`,`id_persona`,`id_tipologia_socio`,`id_servizio`) VALUES ('0','','','1')

Praticamente i campi mi rimangono vuoti....

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #9 il: 19 Lug 2013, 11:21:41 »
questo errore non dipende di certo da questa cosa ma da come gestisci il tutto, il tuo errore lo da il mysql, se come avevi fatto prima ti funzionava usa quello.
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #10 il: 19 Lug 2013, 11:25:30 »
eh no manco prima funzionava.. rimangono sempre vuoti i campi values... non riesco a settarli... nella view del form metto pure $this->item->PARAMETRO; e nemmeno così va...
la view è questa:


Codice: [Seleziona]

<?php 
   
// no direct access
   
defined'_JEXEC' ) or die( 'Restricted access' );

   
$option JRequest::getCmd('option');


   
JHtml::_('behavior.tooltip');
   
JHtml::_('behavior.formvalidation');
   
 
/*Valori che ho bisogno di mettere dentro  nella query INSERT*/
   
$id_persona $_SESSION['id_persona'];
   
$id_tipologia_socio $_SESSION['id_tipologia_socio'];
   
   
$this->item->id_persona $id_persona;
   
$this->item->id_tipologia_socio $id_tipologia_socio;
?>

<form action="index.php" method="post" name="adminForm" id="servizioassociatoaggiuntivo-admin-form" class="form-validate">
   <input type="hidden" name="option" value="<?=$option?>" />
   <input type="hidden" name="task" value="" />
   <input type="hidden" name="id" value="<?=$this->item->id?>" />
   <input type="hidden" name="id_persona" value="<?=$id_persona?>" />
   <input type="hidden" name="id_tipologia_socio" value="<?=$id_tipologia_socio?>"/>
   <?php echo JHtml::_('form.token');
   echo 
"id_persona->" $this->item->id_persona "  ";
   echo 
"id_tipologia_socio->" $this->item->id_tipologia_socio;?>

   
   <?$this->item->id_persona=$id_persona;?>
   
   <fieldset class="adminform">
   
      <legend><?=JText::_( 'Servizi da poter aggiungere' ); ?></legend>
      <ul class="adminformlist">
      <?   foreach ($this->form->getFieldset() as $field)
         { ?>
            <li><?=$field->label?><?=$field->input?></li>
      <?   } ?>
      </ul>
     
   </fieldset>
</form>
« Ultima modifica: 19 Lug 2013, 11:39:20 da grad »

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #11 il: 19 Lug 2013, 11:27:48 »
@grad: ma per l'edit stai utilizzando i bottoni della toolbar? new, save, save2copy, ecc....?

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #12 il: 19 Lug 2013, 11:29:10 »
@grad: ma per l'edit stai utilizzando i bottoni della toolbar? new, save, save2copy, ecc....?


sisi difatti questa è la view.html.php associata alla view edit:


Codice: [Seleziona]

<?php
   defined
('_JEXEC') or die();
   
   
jimport'joomla.application.component.view' );
   
   class 
AnagraficheViewServizioassociatoaggiuntivo extends JView
   
{
      function 
display($tpl null)
      {
         
// Get data from the model
         
$item $this->get'Item' );
         
$form $this->get'Form' );
         
         
// Disable main menu
         
JRequest::setVar('hidemainmenu'true);
         
         
// Toolbar
         
JToolBarHelper::titleJText::_'COM_ANAGRAFICHE_SERVIZI_ASSOCIATI_NEW' ), 'generic.png' );
         
         
JToolBarHelper::save('servizioassociatoaggiuntivo.save');
         
JToolBarHelper::save2new('servizioassociatoaggiuntivo.save2new');
         
JToolBarHelper::cancel('servizioassociatoaggiuntivo.cancel'false 'JTOOLBAR_CANCEL' 'JTOOLBAR_CLOSE');
         
         
$this->item $item;
         
$this->form $form;
         
         
parent::display($tpl);
         
         
JText::script('COM_ANAGRAFICHE_ERRORE_VALIDAZIONE');
      }   
   }
?>


Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #13 il: 19 Lug 2013, 11:35:06 »
per chiarire meglio la tua richiesta, tu hai bisogno che dall'elenco delle entry del tuo componente tu possa passare dei valori (che hai già) alla pagina di creazione di una nuova entry, è giusto?

Quindi devi recuperare questi valori nella view dell'edit ed elaborarli. Giusto?

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #14 il: 19 Lug 2013, 11:38:11 »
Esattamente!O meglio, i valori li ho recuperati dalla view con la lista dei servizi, poi IN quelal vista clikko sul pulsante nuovo e vado a scegliere un servizio. In quella view, dove scelgo il servizio devo avere dei parametri che ho recuperato prima  nella lista, quindi io nella view dell'edit ho già tutto pronto. A quel punto devo eleborarli mandandoli dentro la query insert into che joomla fa da solo... spero di esssere stato abbastanza chiaro, nel caso dimmelo che cerco di spiegarmi ancora meglio... è che con il pattern MVC e la gestione che ne fa joomla non mi trovo granchè bene
« Ultima modifica: 19 Lug 2013, 11:46:21 da grad »

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #15 il: 19 Lug 2013, 11:45:59 »
perdonami quindi tu nella view di modifica delle entry hai già i valori? Cioè se tu facessi un

echo $tuoValore;

nella view, stampi correttamente l'informazione che ti serve o che vuoi elaborare? E dopo averla elaborata se stampi

echo $valoreElaborato;

ottieni già ciò che ti serve alla fine?

Se si in che punto trovi esattamente la difficoltà e quali sono le necessità specifiche?

Probabimente sono io che non ho capito quindi ti servirà spiegarmelo un po più lentamente :)

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #16 il: 19 Lug 2013, 11:51:57 »
Citazione
è che con il pattern MVC e la gestione che ne fa joomla non mi trovo granchè bene


purtroppo come in tutte le cose bisogna fare esperienza, sicuramente all'inizio è un po spiazzante ma dopo ti assicuro che è una pacchia, comunque molte di queste cose con l'inserimento di valori multipli condizionali si fanno in javascript facendo richieste asincrone in ajax, ma qui si va a complicare ancora di piu
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #17 il: 19 Lug 2013, 11:55:21 »
perdonami quindi tu nella view di modifica delle entry hai già i valori? Cioè se tu facessi un

echo $tuoValore;

nella view, stampi correttamente l'informazione che ti serve o che vuoi elaborare? E dopo averla elaborata se stampi

echo $valoreElaborato;

ottieni già ciò che ti serve alla fine?

Se si in che punto trovi esattamente la difficoltà e quali sono le necessità specifiche?

Probabimente sono io che non ho capito quindi ti servirà spiegarmelo un po più lentamente :)


Nono perdonami tu.. sono io che spesso non riesco a spiegarmi.
Allora, praticamente nell'immagine che ho allegato prima si vede la mia lista di servizi. Io ne voglio aggiungere un'altro, per esempio. A quel punto cosa faccio? Mi prendo dei valori in quella vista (view allegata prima) che sonoid_persona e id_tipologia_socio, e nella view aperta dopo il click sul pulsante NUOVO, li recupero questi valori.
Adesso nella view di inserimento nuovo servizio ho questa cosa qua (guarda allegato), riesco a stampare i valori RECUPERATI dalla view precedentemente visitata MA non riesco ad inserirli come valori da inserire nella query insert... Quindi il mio problema sostanziale è: mettere i miei valori recuperati (che te li ho stampati a video per far vedere che ce li ho) dentro i VALUES della query di inserimento

[allegato eliminato automaticamente dopo un anno]

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #18 il: 19 Lug 2013, 11:57:38 »
forse ho capito ma non sperarci al 100%  ;D
Tu hai già predisposto il database per accettare questi dati ed anche il file contenente i campi di ogni entry?

Cioè nel file sql di installazione hai creato i campi e joomla sa che esistono? C'è un file xml per comunicarglielo
« Ultima modifica: 19 Lug 2013, 11:59:14 da giovi »

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #19 il: 19 Lug 2013, 11:58:44 »
ma come inserisci questi dati utilizzando un oggetto JTable o brutalmente con una query?
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

 



Web Design Bolzano Kreatif