it-swarm-es.tech

¿Cómo funciona realmente el envío de formularios con vistas / tareas?

Hola, tengo una pregunta sobre los formularios de Joomla. Quiero entender cómo funciona Joomla internamente, especialmente estoy interesado en com_installer componente para saber cómo funciona. Y encontré un formulario en default.php presentar en com_installer/views/install/tmpl carpeta.

En este archivo hay botones personalizados para enviar un formulario. Y estoy interesado en cómo los botones en realidad desencadenan la instalación de componentes, módulos u otras cosas en sí. En el cuerpo del formulario veo algunos valores ocultos como

<input type="hidden" name="task" value="install.install" />

Por lo tanto, este valor oculto probablemente desencadene una instalación llamando a un controlador de instalación y al método de instalación de ese controlador.

Pero la pregunta es cómo hace Joomla esto. ¿Dónde está el código que redirige la url de view = install a task = install.install? En otras palabras, ¿cómo sabe Joomla que el valor de la entrada oculta debe ir a la URL?

5
Bogdan

@RiccardoZorn es correcto en el nivel base. Hay dos campos de formulario ocultos que se configuran comúnmente: opción y tarea.

Opción: El nombre del componente como com_example Dirige la página para cargar ese componente.

Tarea: una función de controlador o un controlador y una función para llamar. Si tiene un '.' en ella, la parte anterior especifica un controlador para cargar y luego llama a la función con el nombre de la parte después del período. Si no hay período, solo ejecutará la función en el controlador predeterminado (generalmente controller.php en la carpeta base del componente.


También pregunta específicamente sobre los botones de la barra de herramientas. Esto implica un poco de javascript que Joomla carga automáticamente para encender los botones.

Cuando se hace clic en el botón, debe activar Joomla.submitbutton(). Esta función toma un valor que es la tarea que se establece en función del botón en el que se hace clic. Por lo tanto, si hace clic en el botón Guardar, esto normalmente configurará la tarea en import.save. (No creo que ese botón exista realmente en este componente, pero muchos otros lo tendrán).

La función submitbutton por defecto simplemente lo empuja a otra función submitform. Esta función luego cambiará esa tarea al campo oculto apropiado. Finalmente esto envía el formulario.

Por lo tanto, aunque esos botones de la barra de herramientas no son botones de envío (o incluso en la etiqueta del formulario), actualizarán el valor oculto de task y enviarán el formulario usando javascript.

Puede encontrar las funciones principales de JavaScript aquí: media/system/js/core-uncompressed.js

3
David Fritsch

La tarea es un método en el controller.php en la carpeta del componente principal (si es una sola palabra), o el nombre del controlador y su método separados por un punto, es decir, install.install Será analizado por el método install() en controllers/install.php

2
Riccardo Zorn