Qu'est-ce qui entraînerait la duplication d'un formulaire Sitecore?
J'ai créé un envoi personnalisé basé sur le module ci-dessous:
https://www.nishtechinc.com/Blog/2018/April/Send-E-mail-Action-to-Sitecore-9-Forms
Tout s'est passé sur ma machine de développement, mais une fois déplacé vers notre environnement de préparation, il a commencé à soumettre deux fois et donc à envoyer deux e-mails. J'ai ajouté un peu de journalisation à mon code personnalisé et c'est certainement un envoi du même formulaire que SessionId, TemplateId, etc. sont tous identiques.
Au cours de ma recherche effrénée sur Google, je suis tombé sur la question ci-dessous sur l'échange de piles qui ressemble au même problème, mais aucune réponse n'a été donnée.
Le modèle d'envoi personnalisé de formulaires Sitecore 9 est appelé deux fois
Le bit qui me manque est ce qui se passe entre le formulaire soumis et la méthode d'exécution lors de mon action d'envoi. Tout pointeur sur les endroits où je peux résoudre ce problème serait génial.
Je suis perplexe avec ce qui précède, donc toute aide serait grandement appréciée. Veuillez me faire savoir si des informations supplémentaires sont nécessaires.
À votre santé
Shaun
Ps C'est la première fois que je pose une question sur StackExchange, alors faites-moi savoir si ma question aurait pu être plus claire et / ou plus utile.
Réponses
Veuillez apporter les modifications suivantes: ouvrez le fichier \ Views \ FormBuilder \ Form.cshtml .
Ajoutez les lignes suivantes au-dessus de la </script>
balise:
jQuery.fn.preventDoubleSubmission = function() {
$(this).on('submit',function(e){ var $form = $(this); if ($form.data('submitted') === true) {
alert('The form is already submitted. Please wait.');
e.preventDefault();
$form.find(':submit').attr('disabled','disabled'); } else { if($form.valid()) {
$form.data('submitted', true); } } }); return this; }; $("form[data-sc-fxb='@Model.ItemId']").preventDoubleSubmission();
Ceci est pour le test, et cela évitera une double soumission.
Veuillez également vérifier si les formulaires n'ont pas été ajoutés en tête de page, c'est étrange pourquoi il se soumet deux fois.
J'ai eu quelques problèmes avec l'envoi de formulaires Sitecore lorsque Ajax était activé (pas de duplication cependant). La solution consistait à modifier: \ Views \ FormBuilder \ Form.cshtml et à ajouter @ Html.RenderFormStyles () au-dessus de la définition du formulaire et @ Html.RenderFormScripts () sous la définition du formulaire comme ceci:
@Html.RenderFormStyles()
@{
using (Html.BeginRenderRouteForm(Model, IsPost))
{
@Html.AntiForgeryToken()
@Html.Hidden(AttributeNames.FormItemId, Model.ItemId)
@Html.ValidationSummary(true)
@Html.RenderFields(Model)
<input type="hidden" data-sc-fxb-condition value='@Html.RenderConditions(Model)' />
}
}
@Html.RenderFormScripts()