Question

Je travaille entièrement script de validation mon problème est que je ne peux pas recevoir des messages d'erreur personnalisés

Voici ma fonction d'enregistrement: http://pastebin.com/ZF3UVxUr

Et voici mon tableau de messages: http://pastebin.com/d9GUvM3N

mon script de messages est: \application\messages\registration.php Toutes les suggestions

Désolé long code html sautez et d'autres choses

Était-ce utile?

La solution

Si vous attrapant l'exception de validation qui est lancée par le modèle de l'utilisateur, puis probablement votre message emplacement du fichier est incorrect. Il doit être:. 'Enregistrement / user.php'

// ./application/messages/registration/user.php
return array(
    'name' => array(
        'not_empty' => 'Please enter your username.',
    ),
    'password' => array(
        'matches' => 'Passwords doesn\'t match',
        'not_empty' => 'Please enter your password'
    ),
    'email' => array(
        'email' => 'Your email isn\'t valid',
        'not_empty' => 'Please enter your email'
    ),
    'about-me' => array(
        'max_length' => 'You cann\'ot exceed 300 characters limit'
    ),
    '_external' => array(
        'username' => 'This username already exist'
    )
);

En outre, contrairement à la réponse de Michael P, vous devrait stocker toute logique de validation dans le modèle. Votre code de contrôleur, pour enregistrer un nouvel utilisateur, doit être aussi simple que:

try
{
  $user->register($this->request->post());

  Auth::instance()->login($this->request->post('username'), $this->request->post('password'));
}
catch(ORM_Validation_Exception $e) 
{
  $errors = $e->errors('registration');
}

Autres conseils

Vous devez valider les données post avant de tenter de frapper tous les modèles. Vos règles de validation ne sont pas en cours d'exécution parce que vous ne l'avez pas effectué une check () .

je ferais quelque chose comme:

// ./application/classes/controller/user
class Controller_User extends Controller
{

    public function action_register()
    {

        if (isset($_POST) AND Valid::not_empty($_POST)) {
            $post = Validation::factory($_POST)
                ->rule('name', 'not_empty');

            if ($post->check()) {
                try {
                    echo 'Success';
                    /**
                    * Post is successfully validated, do ORM
                    * stuff here
                    */
                } catch (ORM_Validation_Exception $e) {
                    /**
                    * Do ORM validation exception stuff here
                    */
                }
            } else {
                /**
                * $post->check() failed, show the errors
                */
                $errors = $post->errors('registration');

                print '<pre>';
                print_r($errors);
                print '</pre>';
            }
        }
    }
}

séjours registration.php essentiellement les mêmes, à l'exception de la fixation faute d'orthographe « de longueur » vous avez eu:

// ./application/messages/registration.php
return array(
    'name' => array(
        'not_empty' => 'Please enter your username.',
    ),
    'password' => array(
        'matches' => 'Passwords doesn\'t match',
        'not_empty' => 'Please enter your password'
    ),
    'email' => array(
        'email' => 'Your email isn\'t valid',
        'not_empty' => 'Please enter your email'
    ),
    'about-me' => array(
        'max_length' => 'You cann\'ot exceed 300 characters limit'
    ),
    '_external' => array(
        'username' => 'This username already exist'
    )
);

Ensuite, l'envoi d'un champ 'nom' vide retourne:

Array
(
    [name] => Please enter your username.
)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top