S'il vous plaît, comment avec ces codes je puisse faire marcher mon javascript ( affcihage des erreurs de formualaire et envoie en bdd en ajax) avec symfony (FOSJsRoutingBundle) ? Bien sûr sans oublier mon Entity et aussi le FormType que j'ai déjà.
IndexAction
<?php
namespace fullz\fullzBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use fullz\fullzBundle\Entity\Users;
use fullz\fullzBundle\Form\UsersType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class FullzController extends Controller
{
public function indexAction(Request $request)
{
// On crée un client
$user = new Users();
// On recupère le formulaire
$form = $this->createForm(UsersType::class, $user);
// Avant de générer le formulaire, on relie l'objet du formulaire à la requete qui va être envoyer
$form->handleRequest($request);
// Si le formulaire a été soumis
if ($form->isSubmitted() && $form->isValid()){
// On enregistre le client en bdd, mais avant on récupère l'entity manager
$em = $this->getDoctrine()->getManager();
// On demande à l'objet manager de persister l'objet user : $user
$em->persist($user);
$em->flush();
// Le controller est obligé de retourner une reponse ( à revoir )
return new Response('client test !');
}
// On génère le HTML du formulaire créer
return $this->render('fullzBundle:Fullz:index.html.twig',array('form' => $form->createView()));
}
}
Code js :
/* global Routing */
app = {
/*
* Fonction appelée au chargement du DOM
*/
init: function() {
console.info("app.init")
// J'écoute le clic sur le bouton d'envoi...
$(".envoi").on("click", this.monSubmit)
},
/*
* Handler du submit
*/
monSubmit: function(e){
console.info("app.monSubmit")
// On arrête le chargment de la page
e.preventDefault()
// Appel de la fonction pour la vérif...
app.stopChamp()
},
stopChamp: function(){
console.info("app.stopChamp")
if($(".envoi")){
var error = [];
if($(".identif").val()==""){
// On sélectionne le span qui à la class : error-message avec ".next"
error["identif"] = $(".identif").next(".error-message").fadeIn(1000).text("Veuillez bien renseigner le champ !")
}else{
if(!$(".identif").val().match(/^[a-z]+$/i)){
error["identif"] = $(".identif").next(".error-message").fadeIn(1000).text("Nom du url pas valide !")
}else
$(".identif").next(".error-message").fadeOut()
}
if($(".mail").val() == ""){
error["mail"] = $(".mail").next(".error-message").fadeIn(1000).text("Veuillez bien renseigner l'email !")
}else{
if(!$(".mail").val().match(/^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/)){
error["mail"] = $(".mail").next(".error-message").fadeIn(1000).text("Votre email n'est pas valide !")
}
else
$(".mail").next(".error-message").fadeOut()
}
if(!error["mail"] && !error["identif"]){
var $this = $(".envoi")
$this.attr("disabled", "disabled")
setTimeout(function(){
$this.attr("value", "Chargement...")
.css({
opacity : 0.4,
cursor : "not-allowed"
})
},300)
// Appel de la fonction qui fera la requête Ajax
app.reqAjax()
return false
}
}// End test
},
reqAjax: function(){
console.info("app.reqAjax")
// On récupère l'url et le type
//var url = this.action
var url = Routing.generate('fullz')
//var type = this.method
var type = 'POST'
// On récupère les infos (identif et mail)
// var data = $(this).serialize()
var data = form.serialize()
// On fait la requête
$.ajax({
type: type,
url: url,
data: data,
success: app.showSuccess
})
},
showSuccess: function(){
console.info("app.showSuccess")
// On crée la div qui servira de griser le fond....
var popup = $("<div>",{
class: "test",
css:{
background: "rgba(0,0,0,.8)",
width: "100%",
height: "100%",
position: "fixed",
top: 0,
left: 0,
"z-index": 1
}
})
// On ajoute la DIV (grisée) au body
$("body").append(popup)
// On l'a fait apparaitre après quelques sécondes...
popup.fadeTo(600, 0.5, function () {
// On fait apparaitre le POPUP ,après quelques sécondes...
$(".recupPopup").fadeIn(4000)
})
}
}
/*
* Chargement du DOM
*/
$(function(){
app.init();
})
Le formulaire : index.html.twig
<div id="form">
{{ form_start(form,{'attr' : {novalidate : 'novalidate' ,action : ''}}) }}
<div class ="identif">
{{ form_errors(form.identif,{'class':'error-message'}) }}
{{ form_label(form.identif) }} <span class ="error" title="This field is required" >*</span>
{{ form_widget(form.identif,{'attr' : {'placeholder' : 'Ex : alouette'}}) }}
<span class = "error-message">error</span>
</div><!-- endidentif -->
<div class ="mail">
{{ form_errors(form.mail,{'class':'error-message'}) }}
{{ form_label(form.mail) }} <span class ="error" title="This field is required" >*</span>
{{ form_widget(form.mail,{'attr' : {'placeholder' : 'Ex: mignonne@hotmail.fr'}}) }}
<span class = "error-message">error</span>
</div><!-- endmail -->
{#<div class ="sender">#}
{{ form_widget(form)}}
{#</div>#}
{{ form_rest(form) }}
{{ form_end(form) }}
</div><!-- endform -->
Merci de votre aide .
http://dev-muss.fr >>> à la recherche du savoir :-)
Pour un simple formulaire a envoyer et récupérer les valeurs saisies par l'utilisateur, tout cela est bien compliqué.
Symfony, twig. .... à les joies de l'intégration pour l'intégrateur.
Preuve que les developpeurs ben .... ne savent plus développer.
C'est balot
- Edité par Mon nom est God ; phil God il y a environ 20 heures
goddd Alors dieu me guidera au nom du père phil
- Edité par avion 29 juillet 2017 à 4:01:28
http://dev-muss.fr >>> à la recherche du savoir :-)
vérification et envoie de formulaire avec jquery
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.