Validation de champs en i18n

Par arguss, il y a 14 ans


Bonjour,
Je fait actuellement le tuto sur l'internationalisation, c'est stylé, encore un grand Merci Grafikart !

Mais j'ai une question, enfin plutot un probleme : Pour que le tuto marche, je ne dois pas faire de validation (sinon une erreur sql...).
J'ai essayé de bidouillé :

function loadValidation() {
    $this->validate = array(
            'name' => array(
                'rule' => 'notEmpty',
                'message' => __('This field cannot be left blank')
            )
    );
    }

Mais aucun résultat... :(

Au passage je vous montre comment est fait le systeme de validation (pas juste la variable, car je souhaite activé i18n sur les messages d'erreur :

class AppModel extends Model {
    function beforeValidate() {
        $this->loadValidation();
        return true;
    }
}

Puis le code precedent.

Y'a t'il une solution pour faire une vérification par cakePHP malgré l'internationalisation ? (C'est dommage d'avoir un site proprement codé et multilingue, et on peut envoyé un formulaire totalement vide ^^)
Un grand Merci d'avance :D

3 réponses

Kamduras, il y a 13 ans

Salut, as tu trouvé la solution car cela m’intéresse aussi. Merci

Maenhyr, il y a 13 ans

En fait le principe d'écrire le message directement dans le Model casse un peu le principe du MVC. Ce qu'il faut c'est faire une détection de l'erreur dans le Model, comme tu as fais :

function loadValidation() {
    $this->validate = array(
            'name' => array(
                'rule' => 'notEmpty'
            )
    );
    }

Et d'afficher le message d'erreur dans la Vue :

<?php $this->Form-> input('name', array(
    'error' => __('This field cannot be left blank')
));?>

Et là le système devrait bien fonctionner .
http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#options

Kamduras, il y a 13 ans

Merci beaucoup :)