Développer avec RBS Change : [Résolu] Valider des champs de formulaire à la main

  • 81564.1

    29/10/2013 02:15


    Mathias
    Rang : Expert
    Bonjour,

    dans un module spé, je détourne l'utilisation du module formulaire à mes fins :
    - j'ai besoin d'utiliser les fonctionnalités du module formulaire en BO (création de formulaire / champs / contrôles).
    - au sein d'un block spé, l'utilisateur choisir dans les paramètres du block le formulaire qu'il a créé lui-même, et à la soumission du formulaire, j'effectue les traitements voulu, (je n'enregistre pas les réponses, j'appelle une API et je lui passe les éléments récupérés).

    J'ai réussi à implémenter la grande majorité de ma logique côté block et vue, donc :
    - l'affichage du formulaire,
    - la validation des champs via js,
    => toujours en réutilisant ce qui a été fait sur le module formulaire

    Néanmoins, je cherche à effectuer la validation des champs côté serveur et je me confronte au fait que les champs que je souhaite valider ne correspondent pas à un bean de document, et je n'ai donc pas (sauf erreur de ma part) de méthodes me permettant de valider la saisie de l'utilisateur.

    J'ai un tableau de valeur saisies dans le formulaire récupérés via $this->getParameters() qui me donne :
    array (
      'f11174' => 'email@test.com',
      'f11175' => 'Nom de famille',
      'f11176' => 'Prénom',
      'f11177' => '01/12/2004',
      'f11180' => 'rue de la poste',
      'f11178' => '75001',
      'f11179' => 'paris',
      'selfUrl' => '/',
      'backUrl' => 'http://local.mailchimp.fr/',
      'submit_11171_myBlockb_8' => 'Envoyer',
    )

    J'ai une méthode (légèrement modifiée *) qui me permet de récupérer les règles de validations de mon formulaire.
    {
    	"f11174":{"email":"true","blank":"false","maxSize":"255","minSize":"0"},
    	"f11180":{"maxSize":"255","minSize":"0"},
    	"f11175":{"maxSize":"255","minSize":"0"},
    	"f11178":{"maxSize":"255","minSize":"0"},
    	"f11176":{"maxSize":"255","minSize":"0"},
    	"f11179":{"maxSize":"255","minSize":"0"},
    	"f11177":{"date":"d\\/m\\/Y||"}
    }
    

    ------------------------------------------------
    * = j'ai dupliqué la méthode getValidationRulesJSON et j'ai modifié la ligne suivante afin d'avoir une concordance entre mon nom de champs au sein de mon premier tableau et le nom du champs dans les règles de validation :
    $rules[$this->getModuleName()."Param[".$field->getFieldName()."]"] = $constraints;
    par :
    $rules[$field->getFieldName()] = $constraints;
    ------------------------------------------------
    Comment, à partir de ces 2 éléments, utiliser une méthode du type
    processValidationRules($fields,$rules)
    sans avoir à tout recoder ? Existe t'il une méthode qui réalise déjà ce besoin ?

    Édité par Mathias 29/10/2013 02:24


    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
  • 81564.2 en réponse à 81564.1 écrit par Mathias

    29/10/2013 18:49


    Mathias
    Rang : Expert
    Bon...
    C'était pas si compliqué, il suffisait de trouver la méthode validate dans le service de BaseForm...

    (head > (smash) > wall).

    Développe sous linux Ubuntu 12.04 LTS Desktop
    Projet ecommerce core 3.6.7
 
Merci de prendre connaissance et de respecter les règles des forums.
 
1442 membres
Aucun membre connecté