Error al insertar en Postgres luego de limpiar la base ...

edited octubre 2008 in Dudas/Problemas
Limpiamos la base de datos , y ahora cuando hacemos un insert nos da el siguiente mensaje ... aunque el registro se inserta igual ... :

Notice: Undefined index: fl_estado in C:\xampp\htdocs\belen\library\kumbia\controller\standard_form\standard_form.php on line 286
Se insertó correctamente el registro

Alguna sugerencia de lo que puede ser ???

Comentarios

  • edited 11:59
    bueno ... voy a cambiar un poco el motivo del error , el tema es el siguiente , en la tabla de estados , como en otras , tenemos un campo
    "estado" que toma un valor cuando el registro está activo y otro cuando esta como NO activo ...

    Antes lo cargabamos con un combo estatico de la siguiente forma :

    function EstadosController(){
    $this->set_combo_static('estado',array(array('0','ACTIVO'), array('1','INACTIVO')));
    }



    luego , pasamos este campo a un trigger , para que cuando se haga una inserción se lo ponga como 0=Activo , y cuando se borre lo ponga en 1=Inactivo ...

    Para ocultar el campo del standarform , lo que se hizo fue reemplazar la funcion anterior por la siguiente :

    function EstadosController(){
    $this->ignore('estado');
    }


    Y es ahora cuando aparece el error del post, anterior ...

    Notice: Undefined index: fl_estado in C:\xampp\htdocs\belen\library\kumbia\controller\standard_form\standard_form.php on line 286
  • En la primera parte cuando limpiaste la BD creo que el problema fue que borraste el campo estado...

    En la segunda parte creo que es un Bug sin embargo tengo que revisarlo puedes probar con $this->hidden("estado");

    El bug reportalo por el Trac de Kumbia...
  • edited 11:59
    Ok , se reportó el bug

    Ticket #25

    Saludos.-
  • Puedes mostrar tanto la estructura de la tabla como el controlador para hacer las pruebas y verificar, Gracias...
  • edited 11:59
    La estructura de la tabla es la siguiente :

    CREATE TABLE "public"."estados" (
    "id" SERIAL,
    "nombre" VARCHAR(100) NOT NULL,
    "descripcion" VARCHAR(200),
    "observacion" VARCHAR(500),
    "estado" VARCHAR(1) NOT NULL,
    CONSTRAINT "estados_pkey" PRIMARY KEY("id")
    ) WITHOUT OIDS;

    CREATE TRIGGER "trg_generar_auditoria" BEFORE INSERT OR UPDATE OR DELETE
    ON "public"."estados" FOR EACH ROW
    EXECUTE PROCEDURE "public"."fnc_generar_auditoria"();

    el controlador es :
    <?php

    class EstadosController extends StandardForm {

    public $scaffold = true;
    public $template = "principal";

    /**
    * El filtro se ejecuta antes de cualquier accion
    * en productos y valida si hay un usuario autenticado
    *
    * @return null
    */
    public function before_filter(){
    if(!Auth::is_valid()){
    $this->route_to("controller: admin");
    return false;
    }
    }



    function EstadosController(){
    //$this->set_combo_static('estado',array(array('0','ACTIVO'), array('1','INACTIVO')));
    $this->ignore('estado');
    }

    }

    ?>

    el modelo es :

    <?php

    class Estados extends ActiveRecord {

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


    }

    ?>
  • edited 11:59
    Luego de analizar el problema que informamos de

    "Notice: Undefined index: fl_estado in C:\xampp\htdocs\belen\library\kumbia\controller\standard_form\standard_form.php on line 286
    "

    Nos dimos cuenta que solo se daba en los insert y no en los updates ,
    se compararon los codigos de dichos métodos en standard_form.php ,
    y realizamos la siguiente modificación en la función insert para resolver el problema y ahora funciona OK ...

    Aqui va lo que se modificó : (Se agregó lo que está en negrita)

    public function insert(){

    $this->view = 'index';
    $this->keep_action = "";

    Generator::scaffold(&$this->form, $this->scaffold);

    if(!kumbia::is_model($this->source)){
    throw new StandardFormException('No hay un modelo "'.$this->source.'" para hacer la operaci&oacute;n de inserci&oacute;n');
    $this->_create_model();
    return $this->route_to('action: index');
    }

    $modelName = kumbia::get_model_name($this->source);

    if(!$this->{$modelName}->is_dumped()){
    $this->{$modelName}->dump_model();
    }

    foreach($this->{$modelName}->attributes_names as $field_name){
    if(isset($_REQUEST["fl_$field_name"])){ $this->{$modelName}->$field_name = $_REQUEST["fl_$field_name"];
    }
    }



    Saludos.-
  • Listo ya fue agregado al SVN bajo la rev-693
Sign In or Register to comment.