Problema con Validates_length_of con V0-5RC2

edited septiembre 2008 in Dudas/Problemas
Tengo el siguiente código en el modelo de acciones :

<?php

class Acciones extends ActiveRecord {

public function __construct(){

$this->validates_length_of("nombre", "minumum: 5", "too_short: El nombre debe tener minimo 5 caracteres");
$this->validates_length_of("nombre", "maximum: 45", "too_long: El nombre debe tener maximo 45 caracteres");
}

}
?>

Y me muestra el siguiente error cuando prueba el sitio :

Notice: Undefined index: minimum in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2204

Notice: Undefined index: maximum in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2205

Notice: Undefined index: in in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2206

Notice: Undefined index: too_long in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2208

Notice: Undefined index: minimum in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2204

Notice: Undefined index: in in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2206

Notice: Undefined index: too_short in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2207

Y luego me muestra los datos

Acciones



Id
Nombre

1 as
3 index
4 delete
5 browse
6 query
7 update
8 back
9 fetch
10 report
11 insert
1 de 10:

Comentarios

  • Hola acabo de ver que es un error del manual...

    $this->validates_length_of("nombre", "minimum: 5", "too_short: El nombre debe tener minimo 5 caracteres");
  • edited 11:59
    igual , cambiando a :
    <?php

    class Acciones extends ActiveRecord {

    public function __construct(){

    $this->validates_length_of("nombre", "minimum: 5", "too_short: El nombre debe tener minimo 5 caracteres");
    }
    }
    ?>

    Me da el siguiente error :

    Notice: Undefined index: maximum in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2205

    Notice: Undefined index: in in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2206

    Notice: Undefined index: too_long in C:\xampp\htdocs\belen\library\kumbia\db\active_record_base\active_record_base.php on line 2208

    Acciones
    ....
  • ok hagamos la siguiente prueba... osea en vez del constructor hazlo con initialize
    public function initialize ()
        {
            $this-&gt;validates_length_of(&quot;nombre&quot;, &quot;minimum&#58; 5&quot;, &quot;too_short&#58; El nombre debe tener minimo 5 caracteres&quot;);
        }
    

    Acabo de hacer las pruebas y me funciona de esa manera
  • edited 11:59
    Agregué el código en el modelo y me quedó de esta manera , pero NO realiza ninguna valización , no de longitud minima ni máxima , se insertan los registros con cualquier valor, tampoco hace el chequeo de uniqueness...


    <?php
    class Acciones extends ActiveRecord {

    public function initialize() {
    $this->validates_uniqueness_of("nombre");
    $this->validates_length_of("nombre", "minimum: 5", "too_short: El nombre debe tener minimo 5 caracteres");
    $this->validates_length_of("nombre","maximum: 45","too_long: El nombre debe tener maximo 45 caracteres");
    }

    public function __construct(){

    }
    }
    ?>
  • Yo acabo de hacer ese ejemplo y me funciona! reinicia el browser
  • edited 11:59
    Si reinicié el explorador , y me deja insertar por ejemplo una accion con menos de 5 caracteres... para este código...

    <?php

    class Acciones extends ActiveRecord {

    public function initialize() {
    $this->validates_uniqueness_of("nombre");
    $this->validates_length_of("nombre", "minimum: 5", "too_short: El nombre debe tener minimo 5 caracteres");
    $this->validates_length_of("nombre","maximum: 45","too_long: El nombre debe tener maximo 45 caracteres");
    }

    public function __construct(){

    //$this->validates_uniqueness_of("nombre");
    //$this->validates_length_of("nombre","minumum: 5","too_short: El nombre debe tener minimo 5 caracteres");
    //$this->validates_length_of("nombre","maximum: 45","too_long: El nombre debe tener maximo 45 caracteres");
    //$this->validates_length_of("nombre", "minimum: 5", "too_short: El nombre debe tener minimo 5 caracteres");
    }




    }

    ?>
  • Reinicia tu browser.... esta muy raro estoy haciendo pruebas con los validadores y me funciona a la perfección!
  • edited 11:59
    Podrá ser que yo estoy usando Postgres como base de datos ?
  • No creo yo trabajo con Postgres <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) --> y me funciona de mil maravillas!
  • edited 11:59
    Bueno , reinicie todo , limpie todos los temporales y volví a poner las validaciones en el __contruct() del modelo ( acciones en este caso )
    y si hace la validación pero muestra un mensaje que no debería ir ...

    Notice: Undefined property: AccionesController::$failures_insert_message in C:\xampp\htdocs\belen\library\kumbia\controller\standard_form\standard_form.php on line 169

    despues de validar que el registro ya existe con ese nombre ...
    ver imagen...
  • edited 11:59
    Bueno , despues de darle vueltas al asunto pude encontrar donde estaba el problema del mensaje que mostraba de más al hacer la validación ...

    El bug esta en el archivo

    \library\kumbia\controller\standard_form\standard_form.php

    en la línea 372 ... debería decir "failure_insert_message" y NO
    "failures_insert_message" como está actualmente...



    /**
    * Utilizamos el modelo ActiveRecord para insertar el registro
    * por lo tanto los
    */
    $this->{$modelName}->id = null;
    if($this->{$modelName}->create()){
    if($this->success_insert_message){
    Flash::success($this->success_insert_message);
    } else {
    Flash::success("Se insert&oacute; correctamente el registro");
    }
    } else {
    if($this->failures_insert_message){
    Flash::error($this->failure_insert_message);
    } else {
    Flash::error("Hubo un error al insertar el registro");
    }
    }
  • Gracias por la paciencia ya el cambio que sugieres se subio al svn con la rev620
Sign In or Register to comment.