Joomla.it Forum
Non solo Joomla... => Sviluppo => : 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
-
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 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]
-
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
-
Quindi il codice che , gentilmente , mi hai postato va inserita nalla pagina con il metodo display, giusto?
-
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
-
è 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
-
è 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 :(
-
il procedimento mi pare corretto, fai un po'di debug (print_r e var_dump)
ciao,
marco
-
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
-
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
-
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
-
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
-
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.
-
non era meglio non farlo, piuttosto che chiedere scusa? >:(
prova a modificare l'ambito di visibilità della variabile:
global $Itemid;
ciao,
marco