it-swarm-es.tech

¿Cómo acceder a los modelos de administrador desde el controlador / vistas del sitio?

Necesito acceder a un modelo final de administrador desde un controlador de sitio. ¿Cuál es la mejor manera de hacer esto? Tengo lo siguiente en mi sitio controlador:

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

luego:

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

en mi opinión, pero esto parece un poco complicado. hay una manera mas facil?

4
codinghands

En realidad no, lo estás haciendo bien.

Es posible que también deba cargar el modelo de tabla de administrador (¿heredado ?, ¿está utilizando J2.5 o 3?). Esto sucede cuando necesita los modelos fuera de su componente, no solo para las vistas. En este caso, es posible que desee soltar el JPATH_COMPONENT_ADMINISTRATOR constante que evitaría usar los modelos desde fuera del componente. Y asegúrese de cargar las clases heredadas con el marco para evitar problemas cuando las clases heredadas se mueven (solo cambiaron la ubicación de su sistema de archivos en J 3.3)

Otro enfoque, posiblemente más agradable y fácil, sería heredar el modelo frontend del modelo admin y mantener las vistas más simples. Esto funciona porque JModelAdmin extiende el JModelForm. Sus modelos frontend estarían casi vacíos, y tendría la oportunidad de compensar allí el código relacionado con el frontend, manteniendo la arquitectura más agradable.

4
Riccardo Zorn

Se puede producir un problema al intentar utilizar la versión de administrador de una clase que existe en ambos lados: administrador y sitio. En este caso, hacerlo es visto como una redeclaración de la clase en la interfaz y no está permitido.

Un ejemplo es ContentModelArticle en Joomla 3.4.5.

0
superauto.fr