Ajout de la barre d'outils par défaut de Joomla dans une page de vue des composants

10

Je développe un composant mvc pour joomla 2.5 et 3.Dans de nombreux composants, j'ai vu qu'ils ont ajouté les boutons de commande par défaut de joomla comme new, edit, publish, trash, options en haut de leur page de paramètres dans le côté admin. Par exemple. si l'on va composants-> liens Web-> page de liens, je parle de ces boutons de commande en haut à droite.

Alors, comment puis-je ajouter ces boutons de commande dans la page des paramètres de mon composant? lorsque vous cliquez dessus, il effectuera une action respective et affichera la vue respective. Par exemple, si je clique sur le bouton "nouveau", il affichera la vue d'entrée de mon composant mvc telle qu'elle est.

Alors, comment pourrais-je ajouter les boutons de commande de joomla entièrement réalisables dans la page des paramètres de mon composant dans le côté administrateur.

dev-m
la source

Réponses:

12

La meilleure pratique consiste à créer la addToolBar()méthode dans votre classe View, puis à utiliser la JToolBarHelperclasse pour créer des boutons de commande:

protected function addToolBar()
{
  JToolBarHelper::addNew('yourcontroller.add');
  JToolBarHelper::editList('yourcontroller.edit');
}

Ainsi, ceux-ci appelleront la tâche / fonction "ajouter" / "modifier" dans votre contrôleur spécifié. Ensuite, appelez simplement $this->addToolBar()la display()méthode de votre vue .

Référence Création d'une barre d'outils pour votre composant

Dmitry Rekun
la source
Je n'ai qu'un fichier contrôleur controller.php dans mon composant et à l'intérieur j'ai une fonction function add() { JRequest::setVar('view', 'entry'); JRequest::setVar('layout', 'form'); parent::display(); }donc dans mon fichier view.html.php j'ai ajouté JToolBarHelper :: addNewX ('controller.add'); puis un nouveau bouton apparaît, mais lorsque vous cliquez dessus, il ne passe pas à mon formulaire d'affichage à la place ajoute un # à l'url
dev-m
Essayez d'omettre controller.task-JToolBarHelper::addNewX();
Dmitry Rekun
Ajout uniquement de JToolBarHelper :: addNewX (); mais ne fonctionne pas.
dev-m
Ensuite, vous devez créer un contrôleur approprié sous le controllersrépertoire. Voir Ajout d'actions backend
Dmitry Rekun
5

Vous devez vous assurer que la vue qui affiche les boutons a un formulaire à soumettre. Le nom du formulaire doit être adminForm. Le formulaire doit également avoir un champ masqué nommé tâche et le jeton généré dynamiquement. Je ne me souviens pas de l'API du haut de ma tête, mais quelque chose comme JHtml::_('form.token');(quelqu'un corrige cela, si je me trompe)

Cela fait l'affaire.

Mathew Lenning
la source
Le problème que j'ai découvert auparavant était que j'utilisais le nom du formulaire comme adminform à la place adminForm.it semble joomla sensible à la casse!
dev-m
C'est plus une chose JavaScript que spécifique à Joomla. Lorsque vous cliquez sur les boutons, vous déclenchez réellement une fonction de formulaire de soumission JS, donc si le formulaire est introuvable, il échoue discrètement.
Mathew Lenning