Joomla.it Forum
Non solo Joomla... => Sviluppo => : tampe125 09 Mar 2010, 10:39:23
-
Ciao a tutti,
sono appena arrivato e già ho qualche domanda da farvi :D
Sto sviluppando un componente e vorrei aggiungere ulteriori modelli ad una view, come posso fare?
grazie a tutti
-
dal controller:
$model = & $this->getModel('modelName');
-
ottimo grazie.
ma poi nella view come lo raggiungo?
-
ottimo grazie.
ma poi nella view come lo raggiungo?
hai letto sopra?
-
scusa, forse il titolo non è esatto.
volevo sapere come aggiungere più di un modello alla view.
volevo avere il model1, model2 ... model2
se li aggiungo nel controller, come faccio ad usarli nella view?
perchè con $this->get('XXX');
lavoro sul model di default, come faccio a prendere la funzione di un determinato model?
-
esttamente come ti ha detto
- nel controller hai metodi a secondo della task
- nel metodo puoi fare una cosa così
function tuatask() {
$model = $this->getModel('tuomodel');
$view->setModel($model);
$view =& $this->getView('folder della view', 'html');
$view->display();
}
M.
-
ok, però così ho aggiunto un model particolare, non quello di default. se voglio avere più modelli a disposizione?
io aggiungo 3 modelli nel controller come mi avete mostrato, poi passo alla view.
io avrò
function display($tpl){
$data =& $this->get('Data');
??? come 'prendo' gli altri modelli ???
$this->assignRef('data', $data);
}
se io ho i miei 3 model, tutti quanti con la funzione getData standard, come faccio?
mi sa che mi sono perso qualcosa...
-
come 'prendo' gli altri modelli
--------------------------------
sì, mi sa che stai facendo giri strani
... rimani su 1 model 1 view, altre cose falle solo quando ti è chiaro il "giro" mvc
Di default solitamente ti infili nella view con lo stesso nome del componente, da li dovrai muoverti.
Avrai dei pulsanti... chessò .."inserisci nuovo", che "passerà" per il controller portandosi la task.
La task indicherà il metodo da chiamare e il metodo può o meno usare un model e quindi ciò che tu ci scriverai.
Nella view, quando istanzi la classe del model userai un metodo per recuperare i tuoi "data" che vengono dagli script inseriti nel model.
$data = $model->Tuo_metodo
$this->assignRef('data', $data);
parent::display($tpl);
questo ti rende disponibile l'array "data" nel default della view
M.
-
ok, grazie, fin qui il giro mi è chiaro.
il problema che ho io è che voglio mostrare delle informazioni che si trovano su tabelle differenti, per avere una specie di "situazione generale".
per ora ho risolto un modo molto "pratico": nel model istanziato, ho creato altre funzioni che vanno a prendere i dati, copiandole dai vari model originali.
per funzionare funziona, però non è molto corretto dal punto di vista logico.
volevo trovare il modo di ri-utilizzare quello che è già stato scritto.
-
duplicare metodi è abbastanza usuale in joomla.
Potresti provare ad appoggiarti ad un helper
M.
-
duplicare metodi è abbastanza usuale in joomla.
ah meno male, mi stavo facendo dei problemi superflui :D
gracias
-
duplicare metodi è abbastanza usuale in joomla.
ah meno male, mi stavo facendo dei problemi superflui :D
gracias
DRY: mai duplicare il codice! E' una delle peggio pratiche :)
Usa:
$this->addModelPath( JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_miocomponente' . DS . 'models' );
-
ah ecco ora mi torna :D
se ho capito bene, il codice che mi hai scritto va nel controller, poi nella view come faccio a "distinguere" fra i due modelli?
-
ah ecco ora mi torna :D
se ho capito bene, il codice che mi hai scritto va nel controller, poi nella view come faccio a "distinguere" fra i due modelli?
$nativeModel = $this->getModel();
$otherComponentModel = $this->addModelPath( JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_miocomponente' . DS . 'models' );
...