Foro

Botones para enviar formulario por mail

0
Hola: Estoy tratando de enviar un formulario ejemplo a un php. He buscado para ver como utilizar los botones para hacer el link a mimail.php en forma simple sin ajax pero no encontré nada que me aclare la oscuridad...:( Me podrían dar una mano? El código es:
Ext.onReady(function(){
    Ext.QuickTips.init();
    Ext.form.Field.prototype.msgTarget = 'side';
    var bd = Ext.getBody();
    bd.createChild({tag: 'h2', html: 'Form 3 - A little more complex'});
    var top = new Ext.FormPanel({
        labelAlign: 'top',
        frame:true,
        title: 'Multi Column, Nested Layouts and Anchoring',
        bodyStyle:'padding:5px 5px 0',
        width: 600,
		url	: 'ejemplo6.php',
        items: [{
            layout:'column',
            items:[{
                columnWidth:.5,
                layout: 'form',
                items: [{
                    xtype:'textfield',
                    fieldLabel: 'First Name',
                    name: 'first',
                    anchor:'95%'
                }, {
                    xtype:'textfield',
                    fieldLabel: 'Company',
                    name: 'company',
                    anchor:'95%'
                }]
            },{
                columnWidth:.5,
                layout: 'form',
                items: [{
                    xtype:'textfield',
                    fieldLabel: 'Last Name',
                    name: 'last',
                    anchor:'95%'
                },{
                    xtype:'textfield',
                    fieldLabel: 'Email',
                    name: 'email',
                    vtype:'email',
                    anchor:'95%'
                }]
            }]
        },{
            xtype:'htmleditor',
            id:'bio',
            fieldLabel:'Biography',
            height:200,
            anchor:'98%'
        }],
        buttons: [{
            text: 'Save'
****************************************
ACA DEBERÍA IR EL LINK A mimail.php
****************************************
        },{
            text: 'Cancel'
        }]
    });
    top.render(document.body);
    
});
He avanzado en los usos de esta aplicación gracias a la generosa ayuda recibida en este foro,especialmente a Crysfel y Tokkaido. Paso a paso me van saliendo las cosas pero por momentos las neuronas se niegan a trabajar :( Gracias!!
0
te falta una coma (,) antes de handler, tienes que empezar a usar un IDE que te ayude en ese aspecto (indicarte si te falta una coma, un paréntesis, etc), te recomiendo el Komodo Edit que es gratuito y además tiene un plugin de ExtJS, puedes bajarlo de aquí: http://www.activestate.com/komodo-edit/downloads suerte
0
Ya le agregué la coma, se muestra en form en pantalla, lo completo y cuando hago click en "save" el FF me dice: ok; 2 /* !eval(new String("this.compiled = function(values);)) */ Ya me bajé el komodo, uso el el notepad++, pero si este me resuelve problemas de sintaxis adelante entonces. Gracias
0
Tokkaido: Le he agregado el código donde pienso debería ir pero me FF me da error: missing } after property list [Interrumpir en este error] handler: function(){
Ext.onReady(function(){
    Ext.QuickTips.init();
    Ext.form.Field.prototype.msgTarget = 'side';
    var bd = Ext.getBody();
    bd.createChild({tag: 'h2', html: 'Form 3 - A little more complex'});
    var top = new Ext.FormPanel({
        labelAlign: 'top',
        frame:true,
        title: 'Multi Column, Nested Layouts and Anchoring',
        bodyStyle:'padding:5px 5px 0',
        width: 600,
        url	: 'ejemplo6.php',
        items: [{
            layout:'column',
            items:[{
                columnWidth:.5,
                layout: 'form',
                items: [{
                    xtype:'textfield',
                    fieldLabel: 'First Name',
                    name: 'first',
                    anchor:'95%'
                }, {
                    xtype:'textfield',
                    fieldLabel: 'Company',
                    name: 'company',
                    anchor:'95%'
                }]
            },{
                columnWidth:.5,
                layout: 'form',
                items: [{
                    xtype:'textfield',
                    fieldLabel: 'Last Name',
                    name: 'last',
                    anchor:'95%'
                },{
                    xtype:'textfield',
                    fieldLabel: 'Email',
                    name: 'email',
                    vtype:'email',
                    anchor:'95%'
                }]
            }]
        },{
            xtype:'htmleditor',
            id:'bio',
            fieldLabel:'Biography',
            height:200,
            anchor:'98%'
        }],
        buttons: [{
            text: 'Save'
//EL CODIGO AGREGADO
//SENTENCIA CON ERROR
	handler: function(){
//FIN  
//top porque es el nombre de tu form  
top.getForm().submit({  
params: {  
parametro: 'aquí puedes pasar un parametro al lado de tu php'  
},  
success: function(){  
//aqui si deseas hacer algo después de que el envío fue exitoso  
},  
failure: function(form, action){  
if (action.failureType === 'server'){  
//puedes devolver un error personalizado desde el lado de tu servidor  
respuesta = Ext.util.JSON.decode(action.response.responseText);  
Ext.MessageBox.show({  
title: 'Error',  
msg: respuesta.errors.razon,//dentro de errors campo razon  
buttons: Ext.MessageBox.OK,  
icon: Ext.MessageBox.ERROR  
});  
} else {  
//si colocas campos con alloBlank: false, es decir, obligatorios de esta  
//manera le indicas al usuario que hay campos que llenar o con error  
Ext.MessageBox.show({  
title: 'Error',  
msg: 'Faltan datos o algunos de estos estan erroneos!',  
buttons: Ext.MessageBox.OK,  
icon: Ext.MessageBox.ERROR  
});  
}  
},  
scope: this  
});  
}  
        },{
            text: 'Cancel'
        }]
    });
    top.render(document.body);
    
});
[/CODE]
0
es sencillo, debes realizar el submit de tu form en el handler del botón asi: handler: function(){ //top porque es el nombre de tu form top.getForm().submit({ params: { parametro: 'aquí puedes pasar un parametro al lado de tu php' }, success: function(){ //aqui si deseas hacer algo después de que el envío fue exitoso }, failure: function(form, action){ if (action.failureType === 'server'){ //puedes devolver un error personalizado desde el lado de tu servidor respuesta = Ext.util.JSON.decode(action.response.responseText); Ext.MessageBox.show({ title: 'Error', msg: respuesta.errors.razon,//dentro de errors campo razon buttons: Ext.MessageBox.OK, icon: Ext.MessageBox.ERROR }); } else { //si colocas campos con alloBlank: false, es decir, obligatorios de esta //manera le indicas al usuario que hay campos que llenar o con error Ext.MessageBox.show({ title: 'Error', msg: 'Faltan datos o algunos de estos estan erroneos!', buttons: Ext.MessageBox.OK, icon: Ext.MessageBox.ERROR }); } }, scope: this }); } por el lado de el archivo php puedes capturar los parametros que enviaste asi: $mi_param = $_POST['parametro']; y para devolver que fue exitoso el procedimiento: echo '{"success":true}'; si deseas generar un falla: echo '{"success"; false, "errors": { "razon":"falló por esto y esto otro"}}'; espero te sirva :-D

¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook

Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.