Pregunta

Tengo un script de validación de trabajo completamente en funcionamiento, mi problema es que no puedo recibir mensajes de error personalizados

Aquí está mi función para el registro: http://pastebin.com/zf3uvxur

Y aquí está mi matriz de mensajes: http://pastebin.com/d9guvm3n

mi script de mensajes está en: \application\messages\registration.php ¿Alguna sugerencia?

Perdón por el código largo, simplemente omita html y otras cosas

¿Fue útil?

Solución

Si está capturando la excepción de validación que el modelo de usuario presenta, entonces es probable que la ubicación de su archivo de mensajes sea incorrecta. Debe ser: 'Registro/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'
    )
);

Además, contrario a la respuesta de Michael P, debería Almacene toda la lógica de validación en el modelo. Su código de controlador, para registrar un nuevo usuario, debe ser tan simple como:

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');
}

Otros consejos

Debe validar los datos de la publicación antes de intentar presionar cualquier modelo. Sus reglas de validación no se ejecutan porque no ha realizado un cheque de validación ().

Haría algo como:

// ./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>';
            }
        }
    }
}

Registrar.php se mantiene principalmente igual, con la excepción de arreglar el error ortográfico de 'longitud' que tuvo:

// ./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'
    )
);

Luego, enviar un campo vacío 'Nombre' volverá:

Array
(
    [name] => Please enter your username.
)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top