Joomla.it Forum

Non solo Joomla... => Sviluppo => : AloneInTheDark 31 Mar 2010, 10:31:48

: Componete e parametri personalizzati
: AloneInTheDark 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:

<?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:
      $component = JComponentHelper::getComponent( 'com_rainm' );
      $paramsdata = new JParameter( $component->params );
      $this->assignRef('params', $paramsdata);

Nella pagina di default.php

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

ma non stampa nulla!! Dove sbaglio aiutatemi!!
Grazie a tutti
: Re:Componete e parametri personalizzati
: mmleoni 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ù.

:
$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
: Re:Componete e parametri personalizzati
: AloneInTheDark 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]
: Re:Componete e parametri personalizzati
: mmleoni 31 Mar 2010, 12:10:55
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

: Re:Componete e parametri personalizzati
: AloneInTheDark 31 Mar 2010, 13:03:17
Quindi il codice che , gentilmente , mi hai postato va inserita nalla pagina con il metodo display, giusto?

: Re:Componete e parametri personalizzati
: AloneInTheDark 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ù.

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

: Re:Componete e parametri personalizzati
: mmleoni 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


: Re:Componete e parametri personalizzati
: AloneInTheDark 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

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

e nella pagina default.php

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


risultato nulla... vuoto :(
: Re:Componete e parametri personalizzati
: mmleoni 31 Mar 2010, 15:18:19
il procedimento mi pare corretto, fai un po'di debug (print_r e var_dump)

ciao,
marco
: Re:Componete e parametri personalizzati
: AloneInTheDark 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:

:

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:

:
int(0)


Grazie
: Re:Componete e parametri personalizzati
: mmleoni 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
: Re:Componete e parametri personalizzati
: AloneInTheDark 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
: Re:Componete e parametri personalizzati
: mmleoni 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

: Re:Componete e parametri personalizzati
: dacdam 31 May 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.
: Re:Componete e parametri personalizzati
: mmleoni 31 May 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