web-dev-qa-db-fra.com

Comment implémenter le tri par glisser-déposer dans un composant personnalisé?

Je développe un composant Joomla personnalisé pour une application et souhaite implémenter le tri par glisser-déposer dans une liste sous forme de liste sur le site d'administration.

J'ai trouvé un excellent guide ici: Ajout d'un ordre de glisser-déposer dans le composant.

Cependant, il manque quelque chose qui ne me permet pas de sauvegarder la réorganisation des articles. J'ai trouvé que mon contrôleur implémentait la fonction saveOrderAjax() parce qu'il étend JControllerAdmin, mais mon modèle n'implémente pas la fonction saveorder() parce que, comme c'est une vue en liste, J'étends JModelList, ce qui n'implémente pas saveorder(). Seul JModelAdmin a la fonction saveorder().

L'erreur que je reçois dans le journal des erreurs est la suivante:

Erreur irrécupérable PHP: appel de la méthode non définie MyComponentModelMyListModel :: saveorder () dans C:\xampp\htdocs\mysite\libraries\legacy\controller\admin.php à la ligne n

Cela n’a aucun sens pour moi, car une vue liste est supposée utiliser JModelList pour son modèle correspondant, non?
Quelqu'un at-il réussi cette tâche sans écrire quelque chose de tout à fait nouveau?
Je ne pense pas que prolonger JModelAdmin pour mon modèle ici est pratique.

4
kalinma

On dirait que la logique de votre méthode est au mauvais endroit. Essayez d’ajouter votre méthode saveOrder à votre contrôleur de vues, pas au modèle. Les contrôleurs effectuent des actions, les modèles renvoient des données. Vous voudrez probablement déclencher un appel ajax au contrôleur pour effectuer un tri en direct.

Vous pouvez télécharger mon composant JoomRoster à partir du JED. Décompressez-le et cherchez dans le dossier administrateur l'une des vues de liste et voyez comment je l'ai mis en œuvre.

https://extensions.joomla.org/extensions/extension/contacts-and-feedback/contact-details/joomroster/

1
Terry Carter