Autore Topic: Richiamare file controller da altro controller  (Letto 2000 volte)

Offline akasha

  • Esploratore
  • **
  • Post: 106
    • Mostra profilo
Richiamare file controller da altro controller
« il: 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ì:

Codice: [Seleziona]
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
« Ultima modifica: 10 Mar 2013, 16:19:36 da akasha »

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Richiamare file controller da altro controller
« Risposta #1 il: 10 Mar 2013, 16:24:13 »
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.


BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

mau_develop

  • Visitatore
Re:Richiamare file controller da altro controller
« Risposta #2 il: 10 Mar 2013, 16:26:40 »
secondo me se hai così bisogno di "incrociare" l'mvc c'è qualcosa che non quadra nella logica.



Offline akasha

  • Esploratore
  • **
  • Post: 106
    • Mostra profilo
Re:Richiamare file controller da altro controller
« Risposta #3 il: 10 Mar 2013, 16:36:42 »
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

mau_develop

  • Visitatore
Re:Richiamare file controller da altro controller
« Risposta #4 il: 10 Mar 2013, 16:47:31 »
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

Offline simone83

  • Appassionato
  • ***
  • Post: 362
  • Sesso: Maschio
    • Mostra profilo
Re:Richiamare file controller da altro controller
« Risposta #5 il: 10 Mar 2013, 17:05:20 »
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?
BRAINCODE
Da Psd a Joomla - Sviluppo componenti joomla - SEO con Joomla
x-brain

Offline akasha

  • Esploratore
  • **
  • Post: 106
    • Mostra profilo
Re:Richiamare file controller da altro controller
« Risposta #6 il: 11 Mar 2013, 17:20:04 »
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ì:
Codice: [Seleziona]
$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

 

Host

Torna su