[Plone-conosur] Problema con un controller page template y su validador

Franco Pellegrini frapell en gmail.com
Jue Dic 11 23:16:06 UTC 2008


On Thu, Dec 11, 2008 at 9:14 PM, Franco Pellegrini <frapell en gmail.com> wrote:
> On Thu, Dec 11, 2008 at 3:01 PM, fa sanchez cabo <bikosfa en hotmail.com> wrote:
>>
>> Hola chicos a ver si me podeis ayudar con esto.
>> Yo tengo 3 cpt que se controlan con un único controller validator.El caso es
>> que los 3 son casi iguales y los tres tienen 3 botones iguales,uno para
>> pasar a la siguiente pantalla,otro para volver a la anterior y otro para
>> borrar los valores que se hayan introducido en los campos del formulario.
>> En los 2 primeros cpt me funciona todo perfectamente pero en el tercero me
>> salta el siguiente error cuando pulso el boton de volver o el de limpiar los
>> campos.
>> Los tres cpt tienen asignados las acciones y el validador bien.
>> La forma de definir los botones en los 3 cpt es:
>>
>> -----------------------------------------------------------------------------------
>>               <div class="formControls">
>>               <input class="context" type="submit" tabindex=""
>> name="form.button.Submit" value="Siguiente"
>>               i18n:attributes="value" tal:attributes="tabindex
>> tabindex/next;" />
>>               <input class="context" type="submit" tabindex=""
>> name="botonVolver" value="Volver"
>>               i18n:attributes="value" tal:attributes="tabindex
>> tabindex/next;" />
>>               <input class="context" type="submit" tabindex=""
>> name="botonLimpiar" value="Borrar campos"
>>               i18n:attributes="value" tal:attributes="tabindex
>> tabindex/next;" />
>>               </div>
>> ---------------------------------------------------------------------------------------
>>
>> La forma de controlarlos en el controller validator es :
>> --------------------------------------------------------------------------------------
>> if volver:
>>        limpiarCampos(vieneDe)
>>
>> context.REQUEST.RESPONSE.redirect('./SMALLPOL/atestados/form_ActaAccidenteLaboral')
>>
>> elif borrar:
>>        limpiarCampos(vieneDe)
>>        if vieneDe=='implicados1':
>>
>> context.REQUEST.RESPONSE.redirect('./SMALLPOL/atestados/implicadosAcLab1')
>>        if vieneDe=='implicados2':
>>
>> context.REQUEST.RESPONSE.redirect('./SMALLPOL/atestados/implicadosAcLab2')
>>        if vieneDe=='implicados3':
>>
>> context.REQUEST.RESPONSE.redirect('./SMALLPOL/atestados/implicadosAcLab3')
>>
>> else:
>> ---------------------------------------------------------------------------------------------------
>> Y el error que me salta,ahora si,es el siguiente:
>> ------------------------------------------------------------------------------------------------
>> Time 2008/12/11 17:36:36.687 GMT+1
>> User Name (User Id) admin (admin)
>> Request URL http://localhost/SMALLPOL/atestados/implicadosAcLab3
>> Exception Type ValueError
>> Exception Value No next action found for
>> implicadosAcLab3.success.Folder.None Metadata actions: ZMI actions:
>> implicadosAcLab3.failure.None.None=traverse_to:string:implicadosAcLab2
>> implicadosAcLab3.sucess.None.None=traverse_to:string:causasAcLab
>> Traceback (innermost last):
>>
>> Module ZPublisher.Publish, line 119, in publish
>> Module ZPublisher.mapply, line 88, in mapply
>> Module ZPublisher.Publish, line 42, in call_object
>> Module Products.CMFFormController.ControllerPageTemplate, line 74, in
>> __call__
>> Module Products.CMFFormController.BaseControllerPageTemplate, line 28, in
>> _call
>> Module Products.CMFFormController.ControllerBase, line 228, in getNext
>> __traceback_info__: ['id = implicadosAcLab3', 'status = success',
>> 'button=None', 'errors={}', 'context=<ATFolder at atestados>', 'kwargs={}',
>> 'next_action=None', '']
>>
>> ValueError: No next action found for implicadosAcLab3.success.Folder.None
>> Metadata actions: ZMI actions:
>> implicadosAcLab3.failure.None.None=traverse_to:string:implicadosAcLab2
>> implicadosAcLab3.sucess.None.None=traverse_to:string:causasAcLab
>> -------------------------------------------------------------------------------------------------------------------------------
>>
>> GRACIAS CHICOS Y A VER SI ME PODEIS AYUDAR,CHAO.
>>
>> ________________________________
>> Descárgate gratis el nuevo Windows Live Messenger
>> _______________________________________________
>> Plone-ConoSur mailing list
>> Plone-ConoSur en lists.plone.org
>> http://lists.plone.org/mailman/listinfo/plone-conosur
>>
>>
>
> Me parece que el problema viene mas de la mano de los submits que de
> los validadores.
> Yo he hecho muy pocos formularios pero hay un par de cosas que veo y
> por favor corrijame alguien si estoy MFT:
>
> 1) fijate que en el nombre del submit principal dice
> "form.button.Submit", eso te indica el nombre del metodo que se
> ejecuta al darle submit. En los otros botones tenes nombres que no
> sugieren este comportamiento... fijate si por ahi viene la mano
>
> 2) Realmente necesitas hacer un formulario "por partes?" no podes
> meter todo en uno solo con un submit abajo ?
>
> 3) mas relacionado con el traceback que te tiró, parece ser que no
> sabe para donde seguir... fijate que tengas bien definidas, en el
> archivo .metadata del formulario o del validador, las acciones
> siguientes de acuerdo a si los resultados fueron exitosos o si algo
> fallo.
>
> 4) Creo que no es buena practica (o no se si es buena practica o no, a
> mi personalmente me parece feo) hacer formularios de a partes pasando
> el contenido de formulario a formulario... en cada uno que pasas,
> tenes que asegurarte de poner inputs hidden con el contenido del
> formulario anterior, y es realmente engorroso...
> que pasa si haces todo en un solo gran formulario, y lo "Separas" en 3
> usando javascript. De esa forma, a nivel HTML es un solo formulario,
> un solo submit, sin inputs hidden, y un solo validador.
>
> Bueno, espero que se haya entendido.
>
> Saludos y suerte con eso.
> Franco
>
> --
> "I know not with what weapons World War III will be fought, but World
> War IV will be fought with sticks and stones." -- Albert Einstein
> --
> "No se vive celebrando victorias, sino superando derrotas."
> --
> Linux User #456432
> ---------
>

Me olvidaba... probaste el producto PloneFormGen ? es muy completo
para hacer formularios y tiene hecha ya toda la parte de validadores y
eso... por ahi te salvas de desarrollar algo ya existente.

saludos

-- 
"I know not with what weapons World War III will be fought, but World
War IV will be fought with sticks and stones." -- Albert Einstein
--
"No se vive celebrando victorias, sino superando derrotas."
--
Linux User #456432
---------




Más información sobre la lista de distribución Plone-ConoSur