Joomla.it Forum
Non solo Joomla... => Sviluppo => : akasha 10 Mar 2013, 16:16:31
-
Ciao a tutti!
Sto cercando di realizzare un piccolo componente, funziona tutto ma mi è venuto un dubbio: posso richiamare le funzioni che si trovano in un controller da un altro controller?
Mi spiego meglio: se in un controller voglio richiamare un file model faccio così:
JModelLegacy::getInstance('classe', 'prefisso_classe')->nome_funzione();
Posso fare lo stesso con JControllerLegacy? Purtroppo ho qualche problema a trovare la relativa documentazione.
Grazie a tutti!
Akasha
-
Penso di si ma non ne sono sicuro xche non ho provato, prova a fare
$controller = JControllerLegacy::getInstance('nomecomponente');
pero non so se prima devi fare un require_once sul file.
-
secondo me se hai così bisogno di "incrociare" l'mvc c'è qualcosa che non quadra nella logica.
-
Grazie a entrambi per aver risposto!
secondo me se hai così bisogno di "incrociare" l'mvc c'è qualcosa che non quadra nella logica.
Senza entrare nei dettagli del componente (ci vorrebbe un'ora!), ti dico che tento di "incrociare" perché così mi risparmio di riscrivere funzioni: diciamo che si tratta di una funzionalità "extra" che voglio dare ad una view.
Penso di si ma non ne sono sicuro xche non ho provato, prova a fare
$controller = JControllerLegacy::getInstance('nomecomponente');
pero non so se prima devi fare un require_once sul file.
Ho provato come dici, ma ottengo un errore 500 - Classe di controllo non valida: nomecomponenteController.
Dopo vari tentativi ho visto che viene aggiunto sempre "Controller" dopo il nome della classe, quindi ovviamente non trova corrispondenza.
Idee?
Grazie!
Akasha
-
no, se ti serve il model JControllerLegacy::addModelPath($path)
ma secondo me per evitare conflitti (in quel modo non usi solo il controller che vedi ma anche il babbo) ti conviene una bella classe statica in un helper che richiami dove vuoi col require once e che muore non appena usata
-
Allora non si puo usare un controller esterno, c'e solo la possibilità di utilizzare il model esternamente, ma cosa vorresti recuperare da un altro controller?
-
Intanto grazie per le risposte!
Da un controller vorrei richiamarne un altro per inserire in una view anche le funzionalità di un'altra view senza dover riscrivere le funzioni relative, ma dato che con JControllerLegacy non riuscivo ho copiato le funzioni che mi interessano nel controller e quindi nella classe iniziale ed effettivamente non ottengo più alcun errore (ovvio!), però è come se le funzioni fossero vuote, non vengono eseguite in alcun modo.
Le richiamo così:
$this->nomefunzione();
Naturalmente mi sono accertata di aver rimosso/sostituito tutti i richiami all'interno delle funzioni che ho aggiunto.
Cosa ho dimenticato?
Grazie!
Akasha