Bonjour
petite image

http://img140.imageshack.us/img140/4282/grafik1y.png
(allez sur le lien, l'image est trop grosse pour l'afficher ici)
comment on fait pour empecher cela?
(qu'il écrit que le Email est valide et qu'il accepte le formulaire)
petit bout de code :)

<?php
class Comment extends AppModel{
    public $name = 'Comment';
    public $belongsTo = 'Post';
    public $validate = array(
        'pseudo' => array(
            'alphaNumeric' => array(
                'rule' => 'alphaNumeric',
                'required' => false,
                'allowEmpty' => false,
                'message' => 'Pseudo non valide'
                ),
            'between' => array(
                'rule' => array('between', 3, 15),
                'message' => 'longeur incorecte',
            )
        ),
        'mail' => array(
            'rule' => 'email',
            'required' => false,
            'message' => 'Votre email n\'est pas valide',
            'allowEmpty' => true
        )
    );
    public function beforeSave(){
        App::import('Sanitize');
        $this->data'Comment']'contenu'] = Sanitize::html($this->data'Comment']'contenu']);
        return true;
    }
}
?>

du controller

public function voir($id){
        if(!empty($this->data)){
            if($this->Comment->validates($this->data)){
                $this->Session->setFlash('Votre commentaire a été posté');
                $this->Comment->save($this->data);
            }
            else{
                $this->Session->setFlash('Merci de valider vos champs');
                $this->validateErrors($this->Comment);
            }
        }
        $q = $this->Post->find('first', array('conditions' => array('Post.id' => $id)));
        $this->set('a', $q);
    }

la vue voir

<?php
echo '<div class="msg">'.$html->image('/theme/home.png').'<p><span class="titre">'.$a'Post']'titre'].'</span>';
echo '<br/><span class="info">Le '.$date->show($a'Post']'date'], true).' :: '.$a'Category']'titre'].'</span>';
echo '</p></div>';
echo '<p>'.$a'Post']'contenu'].'</p>';
foreach($a'Comment'] as $c):
    echo '<strong>'.$c'pseudo'].'</strong>';
    echo '<p>'.$c'contenu'].'</p>';
endforeach;

echo $form->create('Comment', array('url' => array('controller' => 'posts', 'action' => 'voir', $a'Post']'id'])));
echo $form->input('pseudo');
echo $form->input('mail');
echo $form->input('contenu');
echo $form->input('post_id', array('type' => 'hidden', 'value' => $a'Post']'id']));
echo $form->end('Envoyer');

1 réponse


Flohw
Réponse acceptée

fais un $this->Comment->set($this->data); avant de faire un $this->Comment->validates($this->data);