Création D'un Item Après La Première Modification Du Champs

Bonjour,

Pouvez vous m’aider svp.

Après le clique “Nouveau item”, je veux dès que je fasse la première modification d’un champ l’item sera créer automatiquement, sans le clique “save”.

Juste comme info, aucun champs est obligatoire.

Merci d’avance

Ta question n’est pas très claire et risque de n’avoir peu de réponse.

Pourrais-tu expliquer le contexte, est-ce pour générer un model avec gii ?

Bonjour,

Merci pour la réponse.

Enfaite, j’ai un model Person, j’ai son nom, prenom, date de naissance , …

Je veux dans la création du nouvelle personne (create person), dès que je rempli l’un des champs (nom, prenom, … ou date de naissance), l’outil de la création de la personne sera lancer via ajax, sans le clique sur save.

Merci encore

Salut Amical_3,

si je comprends bien, aussitôt que l’utilisateur saisi un des champs (nom, ou prénom, ou date de naissance), une requête ajax doit être faites pour insérer une nouvelle ligne dans la table des utilisateurs (à priori ‘User’). C’est ça ?

Quel est l’évènement qui déclenche la requête ajax ? Est-ce lorsque le contrôle “nom” (par exemple) perd le focus ?

Comment comptes-tu gérer les règles de validation dans ce cas ? … que se passe-t-il si je saisi une date de naissance et qu’après je quitte le site ? tu as un enregistrement incomplet dans ta base de données … et pour les noms en double ?

Je dois avouer que je trouve que ce mode de fonctionnement est très … comment dire … “étrange” ? …“bizarre” ? ??? … ne connaissant pas les spécifications qui t’obligent à réaliser un tel mécanisme, je le trouve très contraignant, bien peu pratique et source de nombreux problèmes.

ciao

8)

Merci pour la réponse.

Oui je suis tout à fait d’accord avec toi, mais pour l’appli que j’essai de faire j’ai ce besoin.

  • Quel est l’évènement qui déclenche la requête ajax ? Est-ce lorsque le contrôle “nom” (par exemple) perd le focus ? ==> Après le premier onchange.

Dans mon application, j’ai modifié la redirection de l’action “Create” vers la vue “Update”, donc dès que l’item sera créer je serai dans la vue Update.

  • Pour la validation aucun champs est obligatoire (pour simplifier le formulaire)

Merci et bonne journée

Je pense que tu pourrais utiliser les formulaires de type activeForm.

Il y a la propriété enebaleAjaxValidation qui permet de valider le formulaire en Ajax. Dans ton cas, tu pourrais valider les donner et les enregistrer.

Il est possible pour chaque élément du formulaire de faire oui ou non un appel ajax si la valeur de ce dernier change.

J’ai pas trouvé de tuto ou bonnes explications à part cela : http://www.yiiframework.com/doc/blog/1.1/en/comment.create#ajax-based-validation

Bonjour,

Merci pour la réponse.

J’ai utilisé ce que tu m’as proposé, ceci fais la validation des champs mais pas la création de l’item.

Une autre idée stp, ou plus de détails.

Merci infiniment

Bonjour,

Pourquoi ne pas modifier l’action create du controller pour qu’elle créer un model vierge, l’enregistre, prenne l’id de ce nouveau model et redirige vers l’action Update en utilisant cet id.

Faudra ensuite faire un tri au niveau de la sauvegarde ( CACtiveRecord::beforeSave() ) pour ne pas enregistrer les models vide (sauf lors de la creation dans l’action Create) (en utilisant la variable scenario)


Sinon, pourquoi ne pas bricoler avec CActiveForm->clientOptions afterValidateAttribute … Pour ma part, je prefèrerai l’option 1 plutot que de gerer ça en js …