Joomla.it Forum
Non solo Joomla... => Sviluppo => : dlando 30 Aug 2007, 14:16:23
-
Buongiorno,
sto creando una componente per la gestione di informazioni sulle aziende.
Ho gia' creato la componente di Front-end e funziona senza grossi problemi.
Il problema nasce con la parte di back-end.
La base da cui sono partito e' l'esempio pratico del DevBook clock.php.
Quello che non riesco a fare e' far scrivere a video nella pagina di amministrazione il risultato della funzione about.
Ho sviluppato la componente cosi':
[admin.clock.html.php]
//salto la parte del riconoscimento utenti che nel file originale c'e'.
<?php
class HTML_clock {
function aboutHTML(){
?>
//questa parte e' scopiazzata dal secondo esempio del devbook, iShare.
<table cellpadding="4" cellspacing="0" border="0" width="100%">
<tr>
<td colspan="2"><span class="sectionname">componente</span></td>
</tr>
<tr>
<td width="10%">Versione</td>
<td>0.0</td>
</tr>
</table>
<?php
}
}
?>
[admin.clock.php]
<?php
defined('_VALID_MOS') or die('Restricted access');
// include il secondo file di backend
require_once($mainframe->getPath("admin_html"));
// esamina tutte le alternative per il parametro $task
// ed invoca il metodo della classe contenuta nel
// secondo file backend
switch($task) {
case "about" :
default :
HTML_clock::aboutHTML();
}
?>
Pero' quando richiamo l'about dal menu della componente appare sempre e solo la pagine home della parte di amministrazione.
Ho provato anche a prendere il codice di altri componenti cercando di ripulirli da tutti quello che non mi serve .. ma evidentemente tra le cose che penso non mi servano c'e' anche quella che scrive a video.
Qualche indicazione ?
Graz.
-
Ciao dlando.
Forse dirò una c...ta, perdonami, però ci provo.
Forse così?
<?php
defined('_VALID_MOS') or die('Restricted access');
// include il secondo file di backend
require_once($mainframe->getPath("admin_html"));
// esamina tutte le alternative per il parametro $task
// ed invoca il metodo della classe contenuta nel
// secondo file backend
switch($task) {
case "about" :
HTML_clock::aboutHTML();
break;
default :
....
....
}
?>
-
giorno,
ho provato ( anche se mi sembra strano perche' quel che dico li' e' solamente che sia per 'about' che per il caso di default faccia la stessa azione )
ma non ci sono stati cambiamenti.
Nel frattempo ho guardato tutto il forum messaggio per messaggio.
Fino a trovare un post in cui c'era un problema simile.
Veniva data come soluzione quella di installare a mano e non tramite .zip la componente.
La soluzione, funziona.
Il perche' mi e' ignoto .. ma amen. L'informatica non e' scienza esatta.
Grazie comunque per l'aiuto.
Daniele
-
Il problema nasce con la parte di back-end.
La base da cui sono partito e' l'esempio pratico del DevBook clock.php.
Quello che non riesco a fare e' far scrivere a video nella pagina di amministrazione il risultato della funzione about.
Il tuo codice è corretto; tuttavia prova a visualizzare il valore di $task per verificare se il valore è corretto.
Il file XML di installazione è corretto?
-
il file di installazione l'ho copiato pari pari dal devbook.
Pero' non mette i file di admin nella sezione di amministrazione.
Li metto a mano e tutto va alla perfezione.
Il problema e' cosa da poco cmq, visto che la sessione ftp la faccio partire cmq perche' sviluppo un po' per volta e faccio prima a spostare il solo admin.componente.html.php a mano che installare disinstallare tutto.
In compenso ora ho un bel "Call to undefined function setQuery()" con cui litighero' un paio di giorni prima di richiedere aiuto ^^
-
il file di installazione l'ho copiato pari pari dal devbook.
Pero' non mette i file di admin nella sezione di amministrazione.
Li metto a mano e tutto va alla perfezione.
Li metti a mano? Ma allora il file XML cosa ci sta a fare?
Trasferisci tutti i file, anche vuoti. Così fai prima ed è più corretto.
In compenso ora ho un bel "Call to undefined function setQuery()" con cui litighero' un paio di giorni prima di richiedere aiuto
Dipende da come la chiami, è un metodo della classe $database.
-
Li metti a mano? Ma allora il file XML cosa ci sta a fare?
Trasferisci tutti i file, anche vuoti. Così fai prima ed è più corretto.
Ma nu,
all'inizio ho provato a fare l'installazione tramite xml, cosi' da poter alla fine rilasciare il pacchetto zippato e installarlo come si deve.
Questo solo per avere l'idea di come farlo correttamente per il rilascio finale.
Nel frattempo mentre sviluppo la componente, faccio l'upload del file modificato a mano che faccio prima per cui di fatto non e' una grossa limitazione.
Dipende da come la chiami, è un metodo della classe $database.
usavo questa
$strSQL = "SELECT * FROM #__tabella WHERE 1";
$database−>setQuery($strSQL);
$risultati = $database−>loadObjectList();
foreach($risultati as $risultato ){ echo "bla bla bla" ;}
riassunto dal devbook ( chiaramente al posto di #__tabella mettevo il nome della mia tabella. Ho provato sia con il nome tabella per esteso che con la notazione #__ )
modificata in questa
$database->setQuery("SELECT what_i_select FROM my_tab ORDER BY what_i_select");
$selects = $database->loadObjectList();
foreach ($selects as $select){
echo "<div>".$select->what_i_select."</div>";
}
che mi dava come errore
Call to a member function setQuery() on a non-object
per cui ho aggiunto
global $database che non avevo ancora scritto e va ^^
Motivi plausibili: secondo me nel copia incolla le virgolette usate nel testo copiato si copiano non come apici ma come carattere speciale e fan casino.
E' l'unica spiegazione che mi so dare.. dato che i 2 codici sono praticamente identici.
So che e' consigliato richiamare la tabella con #__ ma ho paura che il DB su cui sto lavorando non sia "originale" ma che la tabella che mi e' stato detto di usare siano state fatte a posteriori a mano.
Anche perche' non hanno il tipico prefisso joomlesco jos_ ..per cui accedo diretto che mi risparmio un po' di debug.
Grazie comunque per l'attenzione
Daniele
-
Joomlesco? ;D ;D
-
eh .. un po' informlmente parlando ^^