Bonjour,
sa fait plusieurs heures que je me prend la tête avec les règles de validations..
Un peut de code s'impose :
Le modèle:

<?php
class Post extends AppModel {
    public $validate = array(
        'title' => array(
            'between' => array(
                'rule' => array('between', 5, 15),
                'required' => true,
                'message' => 'Entre 5 et 15 caractères'
            )
        )
    );
}

La vue :

<?php
echo
$this->Form->input('title', array(
    'label' => 'Titre',
    'placeholder' => 'Votre titre...',
    'x-webkit-speech' => 'on'
)) .
$this->Form->textarea('content', array(
    'label' => 'Contenu du billet :',
    'escape' => false,
    'rows' => 7,
    'cols' => 4,
    'class' => 'wysiwyg',
    'id' => 'textarea2',
    'div' => false
)) .
$this->Form->submit('Poster', array('class' => 'white', 'div' => false)) .
$this->Form->submit('Effacer', array('type' => 'reset', 'class' => 'white', 'div' => false)) .
$this->Form->end();

Et enfin le controller :

public function newArt() {  
    $this->loadModel('Post');
    if(!empty($this->request->data)){
        if($this->Post->validates()){
            $this->Post->read(null, 1);
            $this->Post->set(array(
                'name' => $this->request->data'Post']'title'],
                'content' => $this->request->data'Post']'content'],
                'user_id' => $this->Session->read('Auth.User.id')
            ));
            if ($this->Post->save()) {
                $this->Session->setFlash('Votre billet a bien été envoyé');
                $this->redirect(array('controller' => 'admins', 'action' => 'index'));
            }
        }
    }
}

Avec ce code peut importe ce que je mes dans l'input 'title', j'ai l'erreur 'Entre 5 et 15 caractères',
c'est surement une erreur bénigne, mais elle m’empêche d'avancer..
Merci d'avance!

1 réponse


Grafikart
Réponse acceptée

if($this->Post->validates()){

Tu oublie d'envoyer les données au model, là tu lui demande de valider du vide :D