web-dev-qa-db-fra.com

Comment accéder aux modèles d'administrateur depuis le contrôleur de site / les vues?

J'ai besoin d'accéder à un modèle de fin d'administrateur à partir d'un contrôleur de site. Quelle est la meilleure façon de faire cela? J'ai le suivant dans mon site contrôleur:

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

puis:

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

à mon avis, mais cela semble un peu compliqué. Y a-t-il un moyen plus facile?

4
codinghands

Pas vraiment, tu le fais bien.

Vous devrez peut-être également charger le modèle de table d’administrateur (Legacy?, Utilisez-vous J2.5 ou 3?). Cela se produit lorsque vous avez besoin des modèles en dehors de votre composant, pas uniquement pour les vues. Dans ce cas, vous pouvez laisser tomber le JPATH_COMPONENT_ADMINISTRATOR constante qui empêcherait d’utiliser les modèles extérieurs au composant. Et assurez-vous que vous chargez les classes héritées avec la structure pour éviter les problèmes lorsque les classes héritées sont déplacées (ils ont simplement changé l'emplacement du système de fichiers dans J 3.3)

Une autre approche, peut-être plus simple et plus simple, consisterait à hériter le modèle frontal du modèle admin et à simplifier les vues. Cela fonctionne car le JModelAdmin étend le JModelForm. Vos modèles frontaux seraient presque vides, et vous auriez une chance de compenser le code lié au front-end, en gardant l'architecture plus agréable.

4
Riccardo Zorn

Un problème peut survenir lors de la tentative d'utilisation de la version admin d'une classe existant à la fois: côté administrateur et site. Dans ce cas, cela est considéré comme une redéclaration de la classe en interface et non autorisé.

ContentModelArticle dans Joomla 3.4.5 en est un exemple.

0
superauto.fr