Bonjour à toutes et à tous,

Je viens vers vous pour m'éclairer sur un point ou plutôt, m'aider...

Je "m'amuse" avec des données d'un profile utilisateur que l'on peut modifier.
Pour se faire j'active via jQuery un formulaire avec les champs déjà pré-remplit des valeurs existantes.

ce qui donne par exemple :

email ----- bidon@gmail.com
username ---

Le champs username n'est pas pré-remplit car il n'est pas renseigné en BDD alors que le champ email si(c'est un exemple).

J'envoi TOUT le formulaire mais je veux le valider afin que les nouvelles valeurs respectent mes règles !

Alors je vérifie que mon champs email n'existe pas dans ma BDD
HORS
Ce champs existe déjà vu qu'il été déjà renseigné et mon problème se situe là.

Le mieux serait-il pas d'envoyer seulement les champs modifier ? si oui comment faire dans ce cas présent au plus simple possible

Sinon ai-je fais une mauvaise manip ?

ps : je débute dans cakephp

Merci !!

Code Controller :
...]

if (!empty($this->request->data)){
    $this->Profile->create($this->request->data);
    if($this->Profile->validates()){
            echo "Ok"
    }
    else
    {
        $this->Session->setFlash('Erreur', 'flash' ,array('class' => 'alert'));
    }
}

...]

Code Model :
...]

'email' => array(
    'mail' =>array(
    'rule' => 'email',
    'message' => "Adresse email non valide."
    ),
    'uniq' => array(
    'rule' => 'isUnique',
    'message' => "Adresse email déjà utilisée."
    )
)

...]

2 réponses


Salut, je ne comprends pas trop la question, comment peux tu savoir si la valeur est déjà présente en base sans regarder dans celle ci justement ?

Car j'ai fais un jeu d'essai, je sais ce que j'ai en base de donnée. En faite j'ai passé à mon model une variable avec l'email et je le compare à tout les emails sauf celui-ci. Ça contourne le problème ...

J'ai essayé 'on' => 'create' mais cela ne voulais pas fonctionné car je pense que le fais de faire un

$this->Model->saveAll($data)

fais un INSERT INTO et non un UPDATE donc il ne vois pas de différence et rentre donc dans ce fameux "create"