Back to top

Autore Topic: Componete e parametri personalizzati  (Letto 4508 volte)

Offline AloneInTheDark

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Componete e parametri personalizzati
« il: 31 Mar 2010, 10:31:48 »
Salve a tutti,
ho creato un componente formato da una parte front-end e una back-end. La parte front-end ha varie view.
In una di queste view ho inserito nella cartella views\NomeView\tmpl\ il file default.xml per i parametri.

Ecco il file:

Citazione
<?xml version="1.0" encoding="utf-8"?>
<metadata>
   <layout title="Local User">
      <message>
         <![CDATA[ETICHETTA_DESCRIZIONE_UTENTE_LOCALE]]>
      </message>
   </layout>
   <state>
      <name>ETICHETTA_TITOLO_UTENTE_LOCALE</name>
      <description>ETICHETTA_DESCRIZIONE_UTENTE_LOCALE</description>
      <params>
         <param name="nameApplet" type="text" default="valore_default" label="VIEW_LOCALUSER_ETICHETTA_NOMEAPPLET" description="VIEW_LOCALUSER_ETICHETTA_DESCRIZIONE_AP PLET" size="40" />
      </params>
      <advanced>
         <param name="classeApplet" type="text" default="valore_default" label="VIEW_LOCALUSER_ETICHETTA_CLASSEAPPLET" description="VIEW_LOCALUSER_ETICHETTA_DESCRIZIONE_CL ASSEAPPLET" size="40" />

      </advanced>
   </state>
</metadata>


Quando creo una voce di menu' e scelgo la view in questione vedo le opzioni e salvo i valori.
Ora nel file view.html.php (funzione display) ho aggiunto:
Citazione
      $component = JComponentHelper::getComponent( 'com_rainm' );
      $paramsdata = new JParameter( $component->params );
      $this->assignRef('params', $paramsdata);

Nella pagina di default.php

Citazione
   echo 'Valorfe :  ' . $this->params->get('nameApplet');

ma non stampa nulla!! Dove sbaglio aiutatemi!!
Grazie a tutti

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #1 il: 31 Mar 2010, 10:59:38 »
ciao AloneInTheDark,
benvenuto sul forum!

stai leggendo i parametri del file config.xml, di configurazione del componente, non i parametri della view, che sono salvati nel menù.

Codice: [Seleziona]
$menu = JSite::getMenu();
// $Itemid è la voce attiva
$menuparams = $menu->getParams( $Itemid );
$brand_showcase = echo 'Valorfe :  ' . $menuparams->get( 'nameApplet' );

Valorfe? front end value?  ;D ;D

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

Offline AloneInTheDark

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #2 il: 31 Mar 2010, 11:54:49 »
Ciao e grazie per la tua risposta,
ti allego lo screen della parte back-end (quando creo il link del mio componente), vedrai le varie opzioni ottenute grazie al file default.xml (che si trova nella view della parte front-end). La mia difficoltà sta nel fatto di far leggere questi valori(i quali potrebbero essere modificati nell'interfaccia back-end) nella view front-end.

Il tuo codice fa riferimento al menu ... immagino la parte back-end. Giusto?


Grazie


PS
La variabile $Itemid da dove esce? Cos'è?

[allegato vecchio più di un anno eliminato automaticamente]

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #3 il: 31 Mar 2010, 12:10:55 »
Citazione
Il tuo codice fa riferimento al menu ... immagino la parte back-end. Giusto?

Sbagliato!
è in codice da usare nella view di fe per leggere i parametri di personalizzazione della view stessa impostati nella creazione del menù.

$Itemid indica la voce di menù attiva, viene creata dal framework di joomla, se non la vedi inserisci:
global $Itemid;
o leggila tramite JRequest.

ciao,
marco

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

Offline AloneInTheDark

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #4 il: 31 Mar 2010, 13:03:17 »
Quindi il codice che , gentilmente , mi hai postato va inserita nalla pagina con il metodo display, giusto?


Offline AloneInTheDark

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #5 il: 31 Mar 2010, 14:05:00 »
ciao AloneInTheDark,
benvenuto sul forum!

stai leggendo i parametri del file config.xml, di configurazione del componente, non i parametri della view, che sono salvati nel menù.

Codice: [Seleziona]
$menu = JSite::getMenu();
// $Itemid è la voce attiva
$menuparams = $menu->getParams( $Itemid );
$brand_showcase = echo 'Valorfe :  ' . $menuparams->get( 'nameApplet' );

Valorfe? front end value?  ;D ;D

ciao,
marco

Ciao Marco,
ho messo il codice ma ricevo:


Valorfe :
Fatal error: Call to a member function get() on a non-object in <Path>\components\com_rainm\views\localuser\tmpl\default.php on line 40


Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #6 il: 31 Mar 2010, 14:37:46 »
è da mettere nella view (views\NomeView\view.html.php) come ti avevo indicato, tu hai citato quel file ed a me andava bene.

va inserito nel metodo display prima di

$this->assignRef('params', $paramsdata);


ovviamente $paramsdata sarà $menuparams e '$brand_showcase =' è un pezzo di un mio codice che è scappato dentro  ;)

ciao,
marco


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

Offline AloneInTheDark

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #7 il: 31 Mar 2010, 14:57:19 »
è da mettere nella view (views\NomeView\view.html.php) come ti avevo indicato, tu hai citato quel file ed a me andava bene.

va inserito nel metodo display prima di

$this->assignRef('params', $paramsdata);


ovviamente $paramsdata sarà $menuparams e '$brand_showcase =' è un pezzo di un mio codice che è scappato dentro  ;)

ciao,
marco


Ciao Marco,
è grazie di tutto. Cmq nel file view.html.php ho messo

Codice: [Seleziona]
global $Itemid ;
$menu = JSite::getMenu();
$paramsdata = $menu->getParams( $Itemid );
$this->assignRef('params', $paramsdata);

e nella pagina default.php

Codice: [Seleziona]
echo 'Valore :  ' . $this->params->get('nameApplet');


risultato nulla... vuoto :(

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #8 il: 31 Mar 2010, 15:18:19 »
il procedimento mi pare corretto, fai un po'di debug (print_r e var_dump)

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

Offline AloneInTheDark

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #9 il: 31 Mar 2010, 15:46:49 »
il procedimento mi pare corretto, fai un po'di debug (print_r e var_dump)

ciao,
marco


da var_dump($paramsdata) esce:

Codice: [Seleziona]

object(JParameter)#188 (7) { ["_raw"]=>  string(0) "" ["_xml"]=>  NULL ["_elements"]=>  array(0) { } ["_elementPath"]=>  array(1) { [0]=>  string(74) "/path/joomla/libraries/joomla/html/parameter/element" } ["_defaultNameSpace"]=>  string(8) "_default" ["_registry"]=>  array(1) { ["_default"]=>  array(1) { ["data"]=>  object(stdClass)#189 (0) { } } } ["_errors"]=>  array(0) { } }


da var_dump($Itemid) esce:

Codice: [Seleziona]
int(0)


Grazie

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #10 il: 31 Mar 2010, 16:02:02 »
cortesemente non quotare ove non necessario.

ma il componente lo stai raggiungendo da una voce del menù? non è che stai inserendo l'url direttamente nel browser?

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

Offline AloneInTheDark

  • Nuovo arrivato
  • *
  • Post: 17
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #11 il: 31 Mar 2010, 17:01:03 »
allora, la prima chiamata avviene mediante la voce di menu'. Poi questa invoca un task presente nel controller per poi giungere alla visualizzazione (view).

Grazie

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #12 il: 31 Mar 2010, 17:17:53 »
allora cerca di indagare sul perché $Itemid sia zero.
i parametri della view sono salvati nella tabella del menù pertanto se il sistema non riesce ad individuare la voce di menù attiva non li può leggere.

buona ricerca.
marco

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

Offline dacdam

  • Esploratore
  • **
  • Post: 183
  • Sesso: Maschio
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #13 il: 31 Mag 2010, 12:36:51 »
Chiedo perdono se riapro questo post ormai un pò vecchiotto...
Però io credo di sapere come mai l'Itemid non è valorizzato: perchè il componente è collegato alla voce di menù predefinita!

Anche io stò impazzendo cercando di gestire l'Itemid quando ci si trova nella home page del sito.... ma non ne vengo fuori!

Questa cosa dà diversi problemi, tra cui malfunzionamenti in JRoute... qualcuno avrebbe qualche dritta da darmi su come si gestisce l'Itemid quando si sviluppa un componente che si vuole usare come home page ?

Grazie e scusate ancora per la riapertura.

Caio.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:Componete e parametri personalizzati
« Risposta #14 il: 31 Mag 2010, 20:31:39 »
non era meglio non farlo, piuttosto che chiedere scusa?  >:(

prova a modificare l'ambito di visibilità della variabile:
 
global $Itemid;

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

 



Web Design Bolzano Kreatif