web-dev-qa-db-fra.com

Joomla.submitbutton (...) cesse de fonctionner après la mise à jour 3.4.2

Je viens de mettre à jour mon Xampp local et une vue des sites distants de 3.4.1 à 3.4.2 et tous (autant que j'ai testé) mes composants personnalisés ont cessé de pouvoir enregistrer, annuler les dialogues de formulaire dans le back-end.

Ce que je veux dire, ce sont les boutons d’action dans les vues de liste. 'Ajouter un nouvel élément', 'Modifier un élément' .. chargeront les formulaires, mais alors ni sauvegarder, ni annuler ne fera rien!

  • La validation du client est déclenchée, mais rien n'est transmis par la suite.
  • Pas d'erreur php
  • Aucune erreur Joomla
  • Pas d'erreur JS ..

La mise à jour 3.4.2 ne parle que de corrections de sécurité mineures !. Des idées?

Je suis heureux de poster le code, mais pour le moment je ne sais pas quelles parties.

    JToolBarHelper::save('simplelist.save');
    JToolBarHelper::cancel('simplelist.cancel');

J'ai vérifié avec le composant Bannière, ça n'a pas l'air différent de ce que je fais, pourtant ils fonctionnent toujours

2
Andreas

Il s’avère que mon problème est dû à l’utilisation de l’événement onsubmit = "" au niveau de la balise de formulaire. NOTE: Ceci est du code back-end, je n'ai que ce problème lorsque j'utilise JToolBarHelper :: buttons ();

Voici ce que je faisais:

view.html.php

JToolBarHelper::save('simplelistitem.save');
JToolBarHelper::apply('simplelistitem.apply')

edit.php

<script>
    function extraValidationAAA(){ 
        if(jQuery('aa').val() === 'aaa'){ return true;} else {return false;}
    }
</script>

<form action=".." onsubmit="extraValidationAAA();" id='exampleForm' >
..
</>

Cela ne parvient pas à soumettre mes formulaires à partir de la version 3.4.2, même s'ils sont valides. Jetant un coup d'oeil au com_banner/edit.php, j'ai essayé d'utiliser Joomla.submitbutton = function () {...}.

Nouveau edit.php

<script>
    var thisForm = document.getElementById("exampleForm");
    Joomla.submitbutton = function(task)    {
        if (task == "simplelistitem.cancel"){
           Joomla.submitform(task, thisForm );
        }
        else if (document.formvalidator.isValid(thisForm))
        {
            //add any additional validation here
            if(jQuery('aa').val() === 'aaa'){
                Joomla.submitform(task, thisForm );
            }
        }
    };
</script>

<form action=".."  id='exampleForm' >
..
</>

Je n'ai pas les connaissances nécessaires pour expliquer pourquoi, ni ce qui a changé en 3.4.2 pour casser mon approche.

3
Andreas

Avoir le même problème, 3.4.x semble avoir changé la façon dont vous appelez la validation. https://docs.joomla.org/Client-side_form_validation

J'ai changé JHTML::_('behavior.formvalidation'); en JHTML::_('behavior.formvalidator'); et remplacé onsubmit="return doValidate( this );" par class="form-validate". Fonctionne comme prévu maintenant et le formulaire ne met plus en surbrillance les champs de formulaire non valides lorsque vous annulez/retirez du formulaire (le formulaire validerait toujours les champs même lorsque vous annuliez la modification du formulaire à l'aide de l'ancienne méthode).

0
Knotworking

Joomla 3.4.2 a quelques problèmes connus.

Je ne sais pas si c'est lié au vôtre, mais ils publieront Joomla 3.4.3 demain, alors j'attendrais et installais cette mise à jour en premier.

0
Lodder