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

EditController

Es un controlador extendido para editar muy rápidamente los valores de un modelo. Como el resto de controladores extendidos, hace uso de vistas XML.

Ejemplo: EditFabricante.php

Este es un controlador muy sencillo para editar el modelo Fabricante.

<?php
namespace FacturaScripts\Core\Controller;

use FacturaScripts\Core\Lib\ExtendedController\EditController;

class EditFabricante extends EditController
{
    public function getModelClassName()
    {
        return 'Fabricante';
    }

    public function getPageData()
    {
        $pagedata = parent::getPageData();
        $pagedata['title'] = 'manufacturer';
        $pagedata['menu'] = 'warehouse';
        $pagedata['icon'] = 'fas fa-columns';
        $pagedata['showonmenu'] = false;

        return $pagedata;
    }
}

getModelClassName()

Esta función debe devolver el nombre del modelo a editar. No se necesita nada más.

Campos a editar

Este controlador buscará automáticamente un archivo con el nombre Edit{NOMBRE_DEL_MODELO}.xml en la carpeta XMLView. Este archivo es el que define la interfaz de usuario, qué campos editar y cómo.

Añadir más pestañas

Al ser una extensión de PanelController, este controlador permite añadir más tipos de pestañas o secciones para ver o editar otros modelos relacionados. Puedes añadir más pestañas extendiendo las funciones createViews() y loadData():

protected function createViews()
{
    parent::createViews();
    $this->addListView('ListProducto', 'Producto', 'products', 'fas fa-cubes');
}

protected function loadData($viewName, $view)
{
    switch ($viewName) {
        case 'ListProducto':
            $codfabricante = $this->getViewModelValue('EditFabricante', 'codfabricante');
            $where = [new DataBaseWhere('codfabricante', $codfabricante)];
            $view->loadData('', $where);
            break;

        default:
            parent::loadData($viewName, $view);
            break;
    }
}

Puedes leer más sobre cómo añadir pestañas y tipos de pestañas en la documentación de PanelController.