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 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
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.
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).
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.