Joomla.it Forum

Non solo Joomla... => Sviluppo => : tampe125 09 Mar 2010, 10:39:23

: Aggiungere modelli ad una view
: 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
: Re:Aggiungere modelli ad una view
: = odino = 09 Mar 2010, 13:12:29
dal controller:
:
$model = & $this->getModel('modelName');
: Re:Aggiungere modelli ad una view
: tampe125 09 Mar 2010, 14:41:38
ottimo grazie.

ma poi nella view come lo raggiungo?
: Re:Aggiungere modelli ad una view
: = odino = 10 Mar 2010, 17:57:56
ottimo grazie.

ma poi nella view come lo raggiungo?

hai letto sopra?
: Re:Aggiungere modelli ad una view
: tampe125 10 Mar 2010, 20:18:27
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?
: Re:Aggiungere modelli ad una view
: mau_develop 10 Mar 2010, 22:29:29
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.
: Re:Aggiungere modelli ad una view
: tampe125 10 Mar 2010, 22:48:17
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...
: Re:Aggiungere modelli ad una view
: mau_develop 11 Mar 2010, 11:34:03
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.
: Re:Aggiungere modelli ad una view
: tampe125 11 Mar 2010, 11:49:13
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.
: Re:Aggiungere modelli ad una view
: mau_develop 11 Mar 2010, 11:53:49
duplicare metodi è abbastanza usuale in joomla.

Potresti provare ad appoggiarti ad un helper

M.
: Re:Aggiungere modelli ad una view
: tampe125 11 Mar 2010, 12:41:21
duplicare metodi è abbastanza usuale in joomla.

ah meno male, mi stavo facendo dei problemi superflui :D

gracias

: Re:Aggiungere modelli ad una view
: = odino = 11 Mar 2010, 15:41:58
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' );
: Re:Aggiungere modelli ad una view
: tampe125 11 Mar 2010, 15:47:49
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?
: Re:Aggiungere modelli ad una view
: = odino = 11 Mar 2010, 16:13:13
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' );

...