desenv-web-rp.com

Como acessar modelos de administrador do controlador / visualizações do site?

Preciso acessar um modelo final de administrador de um controlador de site. Qual é a melhor forma de fazer isso? Eu tenho o seguinte no meu site controller:

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

então:

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

na minha opinião, mas isso parece um pouco complicado. Existe uma maneira mais fácil?

4
codinghands

Na verdade não, você está fazendo certo.

Também pode ser necessário carregar o modelo da tabela do administrador (herdado ?, você está usando J2.5 ou 3?). Isso acontece quando você precisa dos modelos fora do seu componente, não apenas para as visualizações. Nesse caso, você pode soltar o JPATH_COMPONENT_ADMINISTRATOR constante que impediria o uso de modelos fora do componente. E verifique se você está carregando as classes herdadas com a estrutura para evitar problemas quando as classes herdadas são movidas (elas apenas mudaram a localização do sistema de arquivos em J 3.3)

Outra abordagem - possivelmente melhor e mais fácil - seria herdar o modelo de front-end do modelo de administrador e manter as visualizações mais simples. Isso funciona porque o JModelAdmin estende o JModelForm. Seus modelos de front-end estariam quase vazios e você teria a chance de compensar o código relacionado ao front-end, mantendo a arquitetura mais agradável.

4
Riccardo Zorn

Pode ocorrer um problema ao tentar usar a versão administrativa de uma classe que existe nos lados: administrador e site. Nesse caso, fazer isso é visto como uma redeclaração da classe no frontend e não é permitido.

Um exemplo é o ContentModelArticle no Joomla 3.4.5.

0
superauto.fr