Bonjour.
je souhaiterais savoir comment je peux faire pour que la valeur entrée par un utilisateur n'est pas egal à l'id de la page.

J'ai ceci

// Règle de validation
    public $validate = array(
        'slug' => array(
            'rule' =>'/^[a-z0-9\-]+$/',
            'allowEmpty'=> true,
            'message'   => "Slug is not valid (no space)"
            ),
        'name'  => array(
            'rule' =>'notEmpty',
            'message'   => "Title is mendatory"
            ),
        'pagetitle' => array(
            'rule' =>'notEmpty',
            'message'   => "pagetitle is mendatory"
            ),
        'parent_id' => array(
            'rule' =>'notEmpty',
            'message'   => "parent is mendatory"
            )
    );

Je dois controller le champs "parent_id", n'est pas egal à l'id de la page $this->request->data'Page']'id']

Je pense que je dois modifier la ligne 'rule' de parent_id, ci-dessus?
mais je ne vois pas comment faire.

Je vous remercie pour vos lumières

3 réponses


pierrot10
Auteur
Réponse acceptée

Ok super, je viens d'essayer, mais comment je fait pour récupérer les valeur correspondant au champs id
J'ai essayé de faire ceci:

// Règle de validation
    public $validate = array(
        'slug' => array(
            'rule' =>'/^[a-z0-9\-]+$/',
            'allowEmpty'=> true,
            'message'   => "Slug is not valid (no space)"
            ),
        'name'  => array(
            'rule' =>'notEmpty',
            'message'   => "Title is mendatory"
            ),
        'pagetitle' => array(
            'rule' =>'notEmpty',
            'message'   => "pagetitle is mendatory"
            ),
        'parent_id' => array(
            'rule' =>'isEgalToPage',
            'message'   => "The parent page must not be the same as the current page"
            )
    );

    public function isEgalToPage($check){
        debug($this->request('id'));
        if($this->request('id')==$check){
            return true;
        }else{
            return false;
        }
    }

Bonjour, si tu veux faire cette vérification via la fonction validate, il te faut créer ta propre fonction dans le modèle courant du validate et reporter le nom de la fonction dans le validate.

Par exemple :
<u>La fonction</u>

public function noIqualId($check){
    / **code ...** /
}

<u>Dans le validate</u>

public $validate = array(
    'parent_id' => array(
        'rule' => 'noIqualId',
        'message' => 'ton message d\'erreur'
    ),
    / **suite du code** /
);

Par contre, c'est pour vérifier la valeur, et non pour la changer.

Voilà, j'ai fait comme ceci

public function isEgalToPage($check){
        if($this->data'Page']'id']==$check'parent_id']){
            return false;
        }else{
            return true;
        }
    }