Esta web utiliza cookies propias y de terceros para su funcionamiento. ¿Aceptas? Leer más
mi_controlador.php

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). Tienes un video-tutorial muy completo aquí: https://youtu.be/M5LlRJOJ_Eg

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);