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
"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 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...
Ticket #25
Saludos.-
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");
}
}
?>
"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ón de inserció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.-