La parte de edicion requiere la representación de un formulario cuyos datos los toma de la base de datos correspondiente y los almacena en las tablas definidas en el directorio:
cuya función en el archivo:
se muestra a continuación:
El formulario se carga por medio de las funciones definidas en el modelo, que leen los archivos xml definidos en el directorio:
A continuación, el archivo: com_readmdb/site/forms/m_db/adressen.xml con algunos de los campos de la tabla adressen del banco de datos m_db. Entre ellos se distingue el que lleva name="Actividad_id". Este es del tipo (type) actividadlist que es un menú desplegable con las actividades que distintas empresas tienen y que están almacenadas en la tabla actividad del banco de datos m_db.
La lista desplegable del campo Actividad_id se obtiene del código a continuación contenido en el archivo:
que deriva de ListField y esta a su vez de FormField
En ella se observa una query a la tabla actividad de la que se obtienen los campos "id" y "nombre".
En la lista desplegable se verá el nombre y quedará elegido el id.
Observese que el nombre del archivo ActividadlistField.php es, sin la extensión,
el mismo que el de la clase ListField que deriva de
FormField
que contiene la función getOptions(), que es el array que contiene los datos para la
lista desplegable que la figura a continuación muestra.
El botón de edición arriba indicado se basa en el siguiente código:
En la lista vemos la función
la cual hace llama una nueva página con la variable url &task=Editor.edit la cual va al Controller EditorController y llama la función edit() El Editor Controlle es una clase que deriva de FormController. La lista a continuación muestra el constructor de la clase
El botón de edición nos lleva a este controller. La lista muestra como el controller define la view y el model
Es una clase que deriva de HtmlView. La lista a continuación la muestra
En la lista, la función display llama a la función del modelo:
la cual contiene el la función getFieldset($table) que retorna el formulario a editar
Es una clase que deriva de la AdminModel. La lista a continuación muestra el constructor __construct
El constructor llama al la función AdminModel AdminModel::populateState() cuyo códidiog es:
y que la clase EditorModel sobrescribe como sigue:
donde:
Otra función que sobrescribe es AdminModel AdminModel::getTable(), la cual se sobrescribe según la lista que sige en la que el nombre de la tabla se obtiene de la variable url: &table.
También se sobrescribe de la clase AdminModel getForm, la cual llama al método AdminModel::loadForm que llama a AdminModel::loadFormdata, también está sobrescrito y que toma los datos a través del método AdminModel::getItem(), que retorna un solo record.
La función AdminModel AdminModel::getForm() es así mismo sobrescrita y desde ella se llama a AdminModel::loadForm() tal como se indica a continuación.
El editor carga los datos como sigue:
La lista muestra el layout del editor:
En la figura se muestra un formulario para editar la tabla adresseny uno de los botones de la página es save
El código de ese botón es:
que da el valor a la variable url
con lo cual se hace una llamada a la función save en el controller, que es como sigue:
El formulario arriba representado se llama jform y la orden:
$data = $app->input->get('jform', array(), 'array');
obtiene los datos. Por ejemplo, la instrucción:
foreach($data as $k => $v) echo '<br> k='.$k.' v='.$v, que da como resultado:
$data = $model->validate($form, $data);
controla que estén bien; $data es true
La orden:
de la funcion en la clase AdminModel almacena los datos.