Back to top

Autore Topic: passaggio parametri  (Letto 14567 volte)

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #20 il: 19 Lug 2013, 12:02:49 »
ecco, il file dovrebbe essere admin\models\forms\tuocomponente.xml

Se qui ci sono i campi sotto forma di standard form fields (li gestisci come si gestiscono i parametri del componente) il model - sempre se hai seguito la procedura standard per la sua creazione - va a prendere direttamente questi dati dalla view, senza che modifichi nulla nel model stesso.. L'unico accorgimento è che in questo file gli specifichi che questi campi sono hidden così non dovrai impostarli tu nella view.

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #21 il: 19 Lug 2013, 12:05: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

Sono hidden nel xml ma non si riempiono come hai visto dall'errore mysql

Certo è già tutto predisposto e ho pure la form fatta con xml 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 giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #22 il: 19 Lug 2013, 12:43:55 »
Perchè
Codice: [Seleziona]
<input type="hidden" name="id_persona" value="<?=$id_persona?>" />e non
Codice: [Seleziona]
<input type="hidden" name="id_persona" value="<?php echo $id_persona?>" />?
Stessa cosa vale per la tipologia socio

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #23 il: 19 Lug 2013, 12:47:12 »
Perchè
Codice: [Seleziona]
<input type="hidden" name="id_persona" value="<?=$id_persona?>" />e non
Codice: [Seleziona]
<input type="hidden" name="id_persona" value="<?php echo $id_persona?>" />?
Stessa cosa vale per la tipologia socio


sono la stessa cosa <?= è un abbreviazione fa l'echo
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 #24 il: 19 Lug 2013, 12:47:35 »
Inolte perchè fai questa assegnazione:
Codice: [Seleziona]
$this->item->id_persona = $id_persona;
   $this->item->id_tipologia_socio = $id_tipologia_socio;
Ormai l'oggetto è stato costruito con i valori che hai già ottenuto, inizializzarli poco prima che l'oggetto verrà distrutto a che serve? :)

Inoltre ho visto che ti ostini ad utilizzare $_session anzichè getVar: tu gli hacker non li temi proprio eh?  ;D

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #25 il: 19 Lug 2013, 12:50:08 »
sono la stessa cosa <?= è un abbreviazione fa l'echo
Non ho idea di che versione di php abbia il tuo server ma non tutti supportano le shorthands prima della 5.4.0 e non tutti consentono di usarle. Al di la di questo i campi nel form stesso vengono popolati? E se usi l'echo classico?


edit: casualmente la stampa delle variabili funzionante l'hai fatta proprio con echo mentre questa che non va l'hai fatta con l'abbreviazione. Potrebbe non essere una coincidenza, fammi sapere
« Ultima modifica: 19 Lug 2013, 13:04:08 da giovi »

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #26 il: 19 Lug 2013, 13:38:54 »
Inolte perchè fai questa assegnazione:
Codice: [Seleziona]
$this->item->id_persona = $id_persona;
   $this->item->id_tipologia_socio = $id_tipologia_socio;
Ormai l'oggetto è stato costruito con i valori che hai già ottenuto, inizializzarli poco prima che l'oggetto verrà distrutto a che serve? :)

Inoltre ho visto che ti ostini ad utilizzare $_session anzichè getVar: tu gli hacker non li temi proprio eh?  ;D


perchè  $this->item->id_persona  senza dargli = $id_persona è vuoto


 se io lo stampo senza fargli l'assegnazione non stampa nulla.... è questo il mio problema!!!
« Ultima modifica: 19 Lug 2013, 13:40:59 da grad »

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #27 il: 19 Lug 2013, 13:57:52 »
Qui stai facendo un giro di peppe inutile:
   
$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;

Finisce che magari il problema era solo una lettera in più/in meno/sbagliata.

E' come dire devo mettere le penne a posto ma prima di metterle nel portapenne le passo dentro una bacinella... A che ti serve la doppia assegnazione? a niente!
anzi per assurdo puoi fare direttamente


Codice: [Seleziona]
   <input type="hidden" name="id_persona" value="<?php echo $_SESSION['id_persona']; ?>" />
Così viene popolato il campo input?

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #28 il: 19 Lug 2013, 14:31:09 »
giovi ti ringrazio tantissimo epr la disponibilità che mi stai dando .
Comunque no purtroppo non funziona nemmeno così .... il vampo values rimane sempre vuoto... l'unico che cambia è il numero apapartenente al servizio selezionato

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #29 il: 19 Lug 2013, 15:02:42 »
cioè se tu stampi la variabile la visualizzi, mentre se stampi il valore nell campo input no, sbaglio?

Cioè nel sorgente html ottieni questo:
Codice: [Seleziona]
<input type="hidden" name="id_persona" value="" /> Quindi il problema è proprio qui?

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #30 il: 19 Lug 2013, 15:06:26 »
no forse non ci siamo capiti...
quello è l'edit.php da quanto ho capito è una base per l'MVC di joomla!


Se faccio <?php echo $this->item->id_persona; ?> non mi stampa NIENTE. Quindi vuol dire che è vuoto. Il mio obiettivo non è riempire il form che vedi fatto in html, quello serve solo per la modifica da quanto ho capito. a me serve INSERIRE degli elementi nel mio db!
In qualche modo devo riempire le VALUES della mia query...

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #31 il: 19 Lug 2013, 15:10:59 »
e se non lo fai tramite la view edit come lo fai? :) In quale momento esatto ti serve riempire il database, durante l'edit o durante altre operazionoi (e se si quali?)

Nel primo caso la procedura è questa: riempi il campo e poi il model pensa a tutto.

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #32 il: 19 Lug 2013, 15:17:40 »
io voglio riempire il database quando clikko il pulsante SALVA. per me finisce li.. nella mia testa è tutto così semplice, ma qui sta diventando un casino e non mi ci trovo per nulla...


Nel primo caso la procedura è questa: riempi il campo e poi il model pensa a tutto.


la view edit.php mi dovrebbe creare il modulo in questa maniera no?
Codice: [Seleziona]

<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>


e il form è questo scritto in xml
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>


quindi mi stai dicendo che devo modificare il model?


il mio model è questo:
Codice: [Seleziona]

<?php
defined('_JEXEC') or die();

jimport'joomla.application.component.modeladmin' );

class AnagraficheModelServizioassociatoaggiuntivo extends JModelAdmin
{

public function getForm($data = array(), $loadData true)
{
// Prendo il form MODIFICO QUESTO?
$form $this->loadForm('com_anagrafiche.servizioassociatoaggiuntivo''servizioassociatoaggiuntivo', array('control' => 'jform''load_data' => $loadData));

if (!$form
{
return false;

else 
{
return $form;
}
}

public function loadFormData()
{
// Load form data
$data $this->getItem();
return $data;
}
}
?>





Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #33 il: 19 Lug 2013, 15:25:33 »
nono ti sto dicendo che nella view edit.php devi inserire a mano i vari campi e non come fa joomla. Anche se è un po sporco, è il metodo più rapido:

Codice: [Seleziona]
<fieldset class="adminform">
<legend><?=JText::_( 'Servizi da poter aggiungere' ); ?></legend>
                <input type="hidden" name="id_persona" value="<?php echo $_SESSION['id_persona']; ?>" />
                <input type="hidden" name="id_tipologia_socio" value="<?php echo $_SESSION['id_tipologia_socio']; ?>" />
                <ul class="adminformlist">
<?php foreach ($this->form->getFieldset() as $field
                        if (
$field->label!="id_persona" and $field->label!="id_tipologia_socio")
?>

<li><?=$field->label?><?=$field->input?></li>
<? } ?>
</ul>
</fieldset>

Il model riconosce automaticamente i campi e se la vede lui a salvarli. Prova

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #34 il: 19 Lug 2013, 15:50:57 »
c'ho provato ma niente...


allora per essere PRECISISSIMO ti posto tutta la mia edit.php e l'errore di mysql:


edit.php
Codice: [Seleziona]

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


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


   
JHtml::_('behavior.tooltip');
   
JHtml::_('behavior.formvalidation');
   
   
$id_persona $_SESSION['id_persona'];
   
$id_tipologia_socio $_SESSION['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="" />
   <?php echo JHtml::_('form.token');
   echo 
"id_persona->" $id_persona "  ";
   echo 
"id_tipologia_socio->" $id_tipologia_socio;?>

   
   <fieldset class="adminform">   
      <legend><?=JText::_( 'Servizi da poter aggiungere' ); ?></legend>
                <input type="hidden" name="id_persona" value="<?php echo $_SESSION['id_persona']; ?>" />
                <input type="hidden" name="id_tipologia_socio" value="<?php echo $_SESSION['id_tipologia_socio']; ?>" />
                <ul class="adminformlist">
      <?php   foreach ($this->form->getFieldset() as $field
                        if (
$field->name!="id_persona" and $field->name!="id_tipologia_socio")
         { 
?>

            <li><?=$field->label?><?=$field->input?></li>
      <?   } ?>
      </ul>
   </fieldset>
</form>


errore mysql quando clicco su salva:
Codice: [Seleziona]
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_persona`,`id_tipologia_socio`,`id_servizio`) VALUES ('','','4')




Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #35 il: 19 Lug 2013, 16:08:22 »
Per sicurezza... stai lavorando su Joomla 2.5??
Io non ho così tanti campi nella view e non mi torna qualche attributo del form:

Ad esempio io ho
<form action="<?php echo JRoute::_('index.php?option=com_simplefilemanager&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm"> mentre tu hai come action solo index.php

Poi io ho questo nel campo task:
<input type="hidden" name="task" value="simplefilemanager.edit" />
A te invece il campo task è vuoto!

Non hai un'installazione remota dove puoi farmi vedere un backed di prova?

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #36 il: 19 Lug 2013, 16:12:24 »
eh no... sono in locale, altrimenti te l'avrei fatto vedere molto volentieri.. tanto è un sito di test, che serve a me per imparare a programmare...
Comunque ho seguito come base per iniziare questa guida [size=78%]http://library.logicsistemi.it/it/joomla/developing-joomla-25-mvc-components[/size]

PS: la mia versioen di joomla è la 2.5.11

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:passaggio parametri
« Risposta #37 il: 19 Lug 2013, 16:15:54 »
ti posso consigliare di installare il componente su un sito test (crealo su una piattaforma gratuita qualunque) in modo che sia possibile vedere le modiiche in tempo reale. Altrimenti ad ogni modifica seguiranno 3 post e non ne verremo mai a capo! Comunque sono sicuro che il metodo sia questo perchè avevo la tua stessa esigenza qualche tempo fa con un'estensione... di prova :)

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #38 il: 19 Lug 2013, 16:24:24 »
stasera a casa faccio un dominio veloce su altervista e installo un joomla di test e facciamo delel prove
« Ultima modifica: 19 Lug 2013, 16:39:14 da grad »

Offline grad

  • Esploratore
  • **
  • Post: 70
    • Mostra profilo
Re:passaggio parametri
« Risposta #39 il: 19 Lug 2013, 19:20:41 »
Hosting fatto.. il sito lo puoi trovare qua: http://testcomponente.joomlahost.it/


entro stanotte lo sistemo e vi do user e pass
« Ultima modifica: 19 Lug 2013, 19:43:59 da grad »

 



Web Design Bolzano Kreatif