No existe el formulario

Hola. Estoy haciendo una personalización en la preinscripcion que registra como se entero el alumno de la oferta (en terminos generales la llamo “interes”). Agrego un nuevo formulario al conjunto del censo para registrar tres preguntas particulares. Todo copiado a semejanza del form de idiomas. Es decir cree una carpeta “interes” en “censo” y adentro tiene:
default.tiwg
form_interes.php
pagelet_interes.js
Luego en la carpeta censo , agrego el pagelet:
pagelet_interes.php

Luego compilo los recursos (./preinscripcion compilar_recursos)

Parce ser todo similar, pero al momento de guardar , en el form de “interes” obtengo el mensaje <<No existe el formulario ‘form_interes’>>
Le he estado dando vueltas mucho, pero no le encuentro la vuelta. Se complica al no poder seguir la ejecucion, y que el envio se por ajax.
Adjunto los archivos modificados.
Gracias


personalizacion_preinscripcion_fcex_unicen.zip (7.76 KB)

Hola Mariano,

Te paso algunas cosas que vi en una primera barrida del código:

  1. form_interes.php
  • Ajustar namespace. Está apuntando a SIU: siu\operaciones\censo\interes;
  1. controlador.php
  • Ajustar namespace. Está apuntando a SIU: siu\operaciones\censo;
  • No copiar el archivo entero, extender del controlador SIU y agregar sólo lo relativo a la personalización.
  1. pagelet_interes.php
  • Ajustar namespace. Está apuntando a SIU: namespace siu\operaciones\censo;
  1. Tendrías que personalizar también vista.php, para agregar el nuevo form (pagelet) al arreglo $FORMS. Seguí la recomendación del punto 2: extendé de la vista original y ajustá sólo lo necesario.

Empezá por ahí. Si después de eso surgen otros errores escribinos nuevamente. Y la compilación de recursos no es necesaria en desarrollo, a menos que tengas el modo produccion => true, que no es lo aconsejado en esa instancia.

Saludos,
Fernando

Hola.
Como en si, no es una operacion nueva, sino una extension de una operacion, estoy agreregando sobre la operacion base. Por eso no estoy modificando los namespaces, porque estan donde corresponden, me parece que por ahí no es el error.
Lo de $FORMS ya estaba :

<?php namespace siu\operaciones\censo; use siu\operaciones\_comun\util_form; use kernel\kernel; use siu\extension_kernel\vista_preinscripcion; class vista extends vista_preinscripcion { // Pagelets del formulario de preinscripci�n static $FORMS = array( 'carrera', 'datos_principales', (......) 'idiomas', 'interes' ); En la clase vista.php, tambien modifique : function get_forms_visibles() { [ ...... ] // Fijo, siempre lo carga. Para no modificar la clae proyecto $salida[] = 'interes'; return $salida; } de manera que siempre tenga visible a lo que quiero agregar

El problema era que el formulario entrega por post los datos del formulario en una especie de arreglo, cuyo indice es el nombre del form:
En el pagelet de datos_personales es:

Array
(
[__csrf] => csrf947bde5b472479682aeb5a37c915d89a241f2752
[form_datos_principales] => Array
(
[apellido] => MARTINEZ
[nombres] => MARIANO
[sexo] => 1
[pais_documento_desc] => Argentina
[tipo_documento_desc] => Documento Nacional de Identidad

Lo que hice fue hacer todo en una carpeta personalizada , como me sugirio Fernando, y reescribir metodos de las clases que necesitaba:

<?php namespace exactas\operaciones\censo\interes; use kernel\kernel; use kernel\util\form; use kernel\util\validador; use siu\modelo\opciones; use siu\operaciones\_comun\preinscripcion_form; class form_interes extends preinscripcion_form function set_datos_desde_post() { /* * Modifo el _POST, porque esta preparado para procesar los * datos de esta manera: el __csrf a un nivel y los datos * agrupados por el nombre del form. */ $nuevo = array(); $nuevo['__csrf'] = $_POST['__csrf']; unset($_POST['__csrf']); $nuevo[self::get_id_html()] = $_POST; $_POST = $nuevo; parent::set_datos_desde_post(); } Con esto sigo avanzando para poder grabar y reutilizar toda la funcionalidad de mensajes y autosave que ya estan hechas para los otros pagelets.