1) QUE ES Y DIFERENCIA INVISIBE VS HIDDEN/OCULTO?
Si tienes un campo oculto en el formulario, el valor de este esta sujeto, con los ultimos depuradores de los navegadores (especialmente el de webkit) se puede hacer en caliente sin salir o recargar el formulario.
Para eso se creo el campo invisible en codeigniter Grocery Crud, este "no esta en el formulario" pero lo estara en el envio post antes de insertar en db.
2) RAZON EXPLICADA DE LOS CAMPOS INVISIBLES ?
Tenemos declarado 3 campos solamente para ver de los 4 que son el equivalente de las columnas ya que no queremos el 'fiel4' salga en el formulario ni sea un campo oculto alterable en el mismo, seguro haria su declaracion asi:
$crud->fields('field1','field2','field3');
$crud->callback_before_insert(array($this,'test_callback'));
Y entonces para el campo 'field4' no presente en el formulario queremos enviar un valor oculto sin usar el campo hidden, bueno normalmente esto no funcionara:
function test_callback($post_array){
$post_array['field4'] = 'test';
return $post_array;
}
La razon es porque seria lo mismo que tomar el envio "POST" y usando la tecnica "hombre en el medio" adicionar un valor, por ende no se permite este campo o valor agregado si no esta declarado.
3) COMO SE USA EL CAMPO INVISIBLE?
Simplemente usamos la función de campos para indicar todos los campos que formarán parte del proceso de inserción y esto significa también los campos que no deberían aparecer.
$crud->fields('field1','field2','field3','field4');
$crud->field_type('field4','invisible');
Con el uso de la función field_type se declara del tipo invisible. Esto NO LO MUESTRA NI APARECE EN EL FORMULARIO PERO SI EN EL ENVIO POST...
Para usar y manipular el valor de "field4" se emplea una funciona callback ahora si funcionara:
$crud->callback_before_insert(array($this,'oculto_callback'));
Declaramos mas abajo en el controlador la manipulacion del valor:
function oculto_callback($post_array){
$post_array['field4'] = 'valor super oculto invisible enviar despues de post';
return $post_array;
}
IMPORTANTE> aqui se uso "callback_before_insert" esto significa que antes que se realize la insercion de los valores del formulario, el campo QUE NO APARECE llamado 'field4' sera adicionado y se le colocara el valor, enviando este a la db, o a donde se dirija.
5) UTILIDAD DE ESTE CAMPO>
Esto resulta bastante práctico y fácil de usar cuando queremos, por ejemplo, insertar algunos datos adicionales sobre el registro que se guarda en la base de datos.Por ejemplo, cuando queremos guardar la fecha / hora de inserción, o si necesitamos conocer al usuario que insertó este registro, o si queremos cifrar algún tipo de información como una contraseña. ¡Las posibilidades son infinitas y el mecanismo está ahí para ayudarnos, fuera de la caja!
Si tienes un campo oculto en el formulario, el valor de este esta sujeto, con los ultimos depuradores de los navegadores (especialmente el de webkit) se puede hacer en caliente sin salir o recargar el formulario.
Para eso se creo el campo invisible en codeigniter Grocery Crud, este "no esta en el formulario" pero lo estara en el envio post antes de insertar en db.
2) RAZON EXPLICADA DE LOS CAMPOS INVISIBLES ?
Tenemos declarado 3 campos solamente para ver de los 4 que son el equivalente de las columnas ya que no queremos el 'fiel4' salga en el formulario ni sea un campo oculto alterable en el mismo, seguro haria su declaracion asi:
$crud->fields('field1','field2','field3');
$crud->callback_before_insert(array($this,'test_callback'));
Y entonces para el campo 'field4' no presente en el formulario queremos enviar un valor oculto sin usar el campo hidden, bueno normalmente esto no funcionara:
function test_callback($post_array){
$post_array['field4'] = 'test';
return $post_array;
}
La razon es porque seria lo mismo que tomar el envio "POST" y usando la tecnica "hombre en el medio" adicionar un valor, por ende no se permite este campo o valor agregado si no esta declarado.
3) COMO SE USA EL CAMPO INVISIBLE?
Simplemente usamos la función de campos para indicar todos los campos que formarán parte del proceso de inserción y esto significa también los campos que no deberían aparecer.
$crud->fields('field1','field2','field3','field4');
$crud->field_type('field4','invisible');
Con el uso de la función field_type se declara del tipo invisible. Esto NO LO MUESTRA NI APARECE EN EL FORMULARIO PERO SI EN EL ENVIO POST...
Para usar y manipular el valor de "field4" se emplea una funciona callback ahora si funcionara:
$crud->callback_before_insert(array($this,'oculto_callback'));
Declaramos mas abajo en el controlador la manipulacion del valor:
function oculto_callback($post_array){
$post_array['field4'] = 'valor super oculto invisible enviar despues de post';
return $post_array;
}
IMPORTANTE> aqui se uso "callback_before_insert" esto significa que antes que se realize la insercion de los valores del formulario, el campo QUE NO APARECE llamado 'field4' sera adicionado y se le colocara el valor, enviando este a la db, o a donde se dirija.
5) UTILIDAD DE ESTE CAMPO>
Esto resulta bastante práctico y fácil de usar cuando queremos, por ejemplo, insertar algunos datos adicionales sobre el registro que se guarda en la base de datos.Por ejemplo, cuando queremos guardar la fecha / hora de inserción, o si necesitamos conocer al usuario que insertó este registro, o si queremos cifrar algún tipo de información como una contraseña. ¡Las posibilidades son infinitas y el mecanismo está ahí para ayudarnos, fuera de la caja!
Comentarios
Publicar un comentario