it-swarm.dev

Come accedere ai modelli di amministratore dal controller / visualizzazioni del sito?

Devo accedere a un modello di amministratore da un controller del sito. Qual'è il miglior modo per farlo? Ho il seguente controller nel mio sito controller:

$this->addModelPath(JPATH_COMPONENT_ADMINISTRATOR.'/models');
...
$view = &$this->getView('MyView', 'html');
$view->setModel($this->getModel('MyAdminModel'));
...
$view->display();

poi:

$model = $this->getModel('MyAdminModel');
$this->data = $model->get('Items');

dal mio punto di vista, ma questo sembra un po 'contorto. C'è un modo più semplice?

4
codinghands

Non proprio, lo stai facendo bene.

Potrebbe anche essere necessario caricare il modello di tabella dell'amministratore (legacy ?, stai usando J2.5 o 3?). Ciò accade quando sono necessari i modelli esterni al componente, non solo per le viste. In questo caso, potresti voler eliminare JPATH_COMPONENT_ADMINISTRATOR costante che impedirebbe l'utilizzo dei modelli dall'esterno del componente. E assicurati di caricare le classi legacy con il framework per prevenire problemi quando le classi legacy vengono spostate (hanno appena cambiato la posizione del loro filesystem in J 3.3)

Un altro approccio, forse più semplice e più semplice, sarebbe quello di ereditare il modello frontend dal modello admin e mantenere le visualizzazioni più semplici. Questo funziona perché JModelAdmin estende JModelForm. I tuoi modelli frontend sarebbero quasi vuoti e avresti la possibilità di compensare lì il codice relativo al frontend, mantenendo l'architettura più gradevole.

4
Riccardo Zorn

È possibile che si verifichi un problema quando si tenta di utilizzare la versione admin di una classe esistente sia in admin che in site In questo caso, farlo è visto come una dichiarazione della classe in frontend e non consentita.

Un esempio è ContentModelArticle in Joomla 3.4.5.

0
superauto.fr