Por favor, consulte la nueva documentación desde la guía de programación
fs_edit_controller
Este es un controlador extendido para editar modelos rápidamente. Simplemente indicas el modelo y las columnas a editar. Permite crear, editar y eliminar. No necesita definir una vista (incluye la suya propia).
Ejemplo (edit_articulo_proveedor.php)
<?php
class edit_articulo_proveedor extends fs_edit_controller
{
public function __construct($name = __CLASS__, $title = 'Artículo proveedor', $folder = 'Compras')
{
parent::__construct($name, $title, $folder);
}
public function get_model_class_name()
{
return 'articulo_proveedor';
}
protected function set_edit_columns()
{
$proveedores = $this->sql_distinct('proveedores', 'codproveedor', 'nombre');
$this->form->add_column_select('codproveedor', $proveedores, 'Proveedor', 3, true);
$this->form->add_column('refproveedor', 'string', 'Ref. proveedor', 3, true);
$this->form->add_column('referencia', 'string', 'Referencia', 3);
$this->form->add_column('codbarras', 'string', 'Cod. Barras', 3);
$this->form->add_column('descripcion', 'textarea', 'Descripcion', 12);
$this->form->add_column('precio', 'money', 'Precio');
$this->form->add_column('dto', 'number', 'Descuento');
}
}
get_model_class_name()
En esta función debemos indicar el nombre del modelo a utilizar. Este modelo debe heredar de fs_extended_model para mayor compatibilidad, y porque estos nuevos modelos son supersencillos.
set_edit_columns()
En esta función debemos definir qué columnas del modelo queremos editar.
Añadir campo al formulario:
$this->form->add_column($col_name, $type, $label, $num_cols, $required);
Para añadir una nueva columna a editar.
- $col_name: el nombre de la columna en la tabla y en el modelo.
- $type: el tipo de columna, por defecto string. Otros tipos: bool, date, money y number.
- $label: la etiqueta a mostrar encima del campo.
- $num_cols: ¿Cómo de grande quieres que se muestre el campo? Bootstrap divide el espacio horizontal de la página en 12 columnas, así que aquí puedes elegir de 1 a 12.
- $required: true para indicar que este campo es obligatorio, y no permitir al usuario guardar si no ha puesto nada aquí.
Añadir campos select al formulario:
$this->form->add_column_select($col_name, $values, $label, $num_cols, $required);
Para añadir un select o combobox al formulario.
- $col_name: el nombre de la columna en la tabla y en el modelo.
- $values: valores a mostrar en el selector.
- $label: la etiqueta a mostrar encima del campo.
- $num_cols: ¿Cómo de grande quieres que se muestre el campo? Bootstrap divide el espacio horizontal de la página en 12 columnas, así que aquí puedes elegir de 1 a 12.
- $required: true para indicar que este campo es obligatorio, y no permitir al usuario guardar si no ha puesto nada aquí.
Obtener valores rápidamente de una tabla: Podemos usar la función $this->sql_distinct($tabla, $columna)
$values = $this->sql_distinct('fs_logs', 'tipo');
Usar en combinación con un fs_list_controller:
Para combinarlo bien con un fs_list_controller debes añadir un botón nuevo en el controlador listado:
$this->add_button($tab_name, 'Nuevo', 'index.php?page=NOMBRE_DEL_CONTROLADOR_EDIT', NOMBRE_DE_LA_COLUMNA_PRIMARIA);
Y por último indicar la url al hacer clic en una línea:
$this->decoration->add_row_url($tab_name, 'index.php?page=NOMBRE_DEL_CONTROLADOR_EDIT&code=', NOMBRE_DE_LA_COLUMNA_PRIMARIA);