IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

FOSuserbundle, validation ajax


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Points : 69
    Points
    69
    Par défaut FOSuserbundle, validation ajax
    Bonjour à tous,

    Je suis en train de faire mon premier projet symfony2 et je souhaiterais savoir dans quelle direction partir pour valider mon formulaire avec ajax (et jquery).

    En gros voici mon idée pour valider le champs mail par exemple:
    1) lorsque utilisateur quitte le champs -> appel ajax vers le controller fosuser registration
    2) demander si l'email est valide (si il existe déjà) ?
    3) réponse JSON

    Du côté ajax j'ai pas trop de problèmes.
    Je souhaiterais surtout savoir quel controller appeler ou quel méthode appeler?
    Je sais que je peux remplacer le controller RegistrationController du bundle mais je suis pas sûr que ça soit la bonne démarche.

    Si quelqu'un peut me donner une idée c'est avec plaisir.
    Merci beaucoup, bon week-end à tous.

  2. #2
    Membre du Club
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Points : 69
    Points
    69
    Par défaut requête ajax retourne le template twig entier
    Bonjour à tous,

    J'ai continuer à travailler la dessus, j'arrive bien à faire une requête ajax, mais je ne sais malheureusement pas comment fait un appel sur la fonction du bundle fosuser qui valide le champs mail:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    function is_field_valid(){
        alert("fonction run");
        var data = {
            'fos_user_registration_form_[username]' : $("#fos_user_registration_form_email").val()
        };
     
        $.ajax({
               type: "POST",
               url: '/jlfa/web/app_dev.php/register/', // rend le template complet
               asyn:false,
               data: data,
               dataType: "json",
               success: function(res) {
     
                   alert(res);
     
               }
         });
    }

  3. #3
    Membre du Club
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Points : 69
    Points
    69
    Par défaut ça fonctionne mais est-ce qu'est correct :)
    Bonjour à tous,

    J'ai trouvé une solution qui à l'air de marché et je souhaiterais avoir votre avis si c'est pas trop barbare
    Comme j'ai pas trouvé d'exemple j'ai essayé de faire ça le plus proprement possible avec mes connaissance faible du framework symfony2:

    1) appel ajax vers un controller "maison"
    2) check si l'email est valide
    3) retour en json
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    class RegistrationController extends BaseController {
     
        function isMailValidAction(){
            $request = $this->container->get('request');
            $my_mail = $request->get('mail');
     
            $userManager = $this->container->get('fos_user.user_manager');
            $user = $userManager->createUser();
            $user->setEmail($my_mail);
     
            $errors = $this->container->get('validator')->validate($user);
            $data = null;
            if (count($errors) > 0) {
                $data = $errors[0]->getMessage();
            }
     
            return new JsonResponse($data);
        }
    }
    Sur mon user j'ajoute la contrainte UniqueEntity("email")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
     
    /**
     * @ORM\Entity
     * @UniqueEntity("email")
     * @UniqueEntity("username")
     * @ORM\Table(name="tut_user")
     */
    class User extends BaseUser
    {
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;
     
        /**
         * @ORM\Column(type="boolean")
         */
        protected $displayMail;
     
        /**
         * @ORM\Column(type="string", length=255)
         */
        protected $aboutMe;
     
        /**
         * @ORM\Column(type="string", length=255)
         */
        protected $adresse;
     
        /**
         * @ORM\Column(type="boolean")
         */
        protected $displayAdresse;
     
        /**
         * @ORM\Column(type="string", length=255)
         */
        protected $formateAdresse;
     
        /**
         * @ORM\Column(type="decimal")
         */
        protected $lat;
     
        /**
         * @ORM\Column(type="decimal")
         */
        protected $lng;
     
     
        public function __construct(){
            parent::__construct();
        }
     
        public function getDisplayMail(){
            return $this->displayMail;
        }
     
        public function setDisplayMail($displayMail){
            $this->displayMail = $displayMail;
        }
     
        public function getAboutMe(){
            return $this->aboutMe;
        }
     
        public function setAboutMe($aboutMe){
            $this->aboutMe = $aboutMe;
        }
     
        public function getAdresse(){
            return $this->adresse;
        }
     
        public function setAdresse($adresse){
            $this->adresse = $adresse;
        }
     
        public function getDisplayAdresse(){
            return $this->displayAdresse;
        }
     
        public function setDisplayAdresse($displayAdresse){
            $this->displayAdresse = $displayAdresse;
        }
     
        public function getFormateAdresse(){
            return $this->formateAdresse;
        }
     
        public function setFormateAdresse($formateAdresse){
            $this->formateAdresse = $formateAdresse;
        }
     
        public function getLat(){
            return $this->lat;
        }
     
        public function setLat($lat){
            $this->lat = $lat;
        }
     
        public function getLng(){
            return $this->lng;
        }
     
        public function setLng($lng){
            $this->lng = $lng;
        }
     
    }
    Appel ajax
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    function is_field_valid(){
        var data = {
            mail : $("#fos_user_registration_form_email").val()
        };
     
        $.ajax({
               type: "GET",
               url: '/jlfa/web/app_dev.php/check-mail',
               asyn:false,
               data: data,
               dataType: "json",
               success: function(res) {
     
                   console.log(res); // affiche mail déjà utilisé
               }
         });
    }

Discussions similaires

  1. [1.x] Validation Ajax formulaire
    Par joff_symfony dans le forum Symfony
    Réponses: 3
    Dernier message: 01/06/2010, 18h04
  2. Plugin JQuery Validate+Ajax
    Par HekThor dans le forum jQuery
    Réponses: 2
    Dernier message: 01/11/2009, 18h11
  3. Plugin JQuery Validate+Ajax
    Par HekThor dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2009, 17h53
  4. Réponses: 1
    Dernier message: 09/03/2009, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo