Advertisement:

Author Topic: Agregar campos al formulario de registro  (Read 5986 times)

Sphinx

  • Newbie
  • *
  • Posts: 35
Agregar campos al formulario de registro
« on: November 15, 2011, 07:11:40 pm »
Gente:
Alguno sabe cuáles son los pasos que debo seguir para agregar 1 campo en el el formulario de registro de usuarios de OSClass???

Sucede que como mi sitio es exclusivo para que anuncien empresas, quiero pedir a los que quieran registrarse en el sitio que ingresen su numero de C.U.I.T. (Código ünico de Identificación Tributaria) o RUT (en otros países).


Supongo que deberé agregar el campo eb la base de datos con phpMyadmin, no??
Y cómo agrego el campo en el OSClass??
Alguna idea???
Despues yo investigo, pero es como para saber por donde arrancar...

Gracias desde ya al que sepa algo...

Juan Ramón

  • Osclass Developer
  • Hero Member
  • *****
  • Posts: 2382
Re: Agregar campos al formulario de registro
« Reply #1 on: November 16, 2011, 03:58:40 am »
Deberías hacer un plugin similar al que hay para los campos de los atributos, pero en este caso para el usuario. Los principales hooks a usar serían los siguientes:
    - Para mostrar los campos en el formulario: user_register_form (simplemente pintar el input)
    - Para guardar los campos al hacer el POST del registro de usuario: user_register_completed (guardar en DB los campos)

Añadir que se debería crear una tabla nueva al instalar el plugins. Es mejor no modificar las tablas básicas de OSClass para que no haya problemas al actualizar y demás... espero que con esos dos hooks te haya guiado un poco... dime si necesitas más información.

Sphinx

  • Newbie
  • *
  • Posts: 35
Re: Agregar campos al formulario de registro
« Reply #2 on: November 16, 2011, 08:56:42 pm »
@Juan Ramón:

Si, eso me da como para comenzar.... ¡Gracias!

Entonces voy a crear un plugin que agrege los campos necesarios en una nueva tabla basándome en el plugin existente y lo modifico lo necesario como para que haga lo que quiero.

Bueno, te aviso como me va.

Sphinx

  • Newbie
  • *
  • Posts: 35
Re: Agregar campos al formulario de registro
« Reply #3 on: November 22, 2011, 04:49:16 am »
@Juan Ramón:

Estoy intentando sacar adelante el plugin para agregar un campo adicional como CUIT al formulario de registro de usuarios. Me encontré con algunas dificultades y quería pedirte un poquito de ayuda a ver en qué estoy fallando:

El plugin se llamará "Extra Registry". Se instala y desisntala perfectamente, pero no logro que se muestre el campo CUIT en el formulario de registro, sino que se muestran en el escritorio de OSClass.

Acá pego el código del "index.php" del plugin, quizá vos podés decirme cuál es mi error:

Code: [Select]
<?php
/*
Plugin Name: Extra Registry
Plugin URI: http://www.sphinxarts.com.ar/
Description: This plugin extends fields in the user registry form, like CUIT, RUT, etc.
Version: 1.0
Author: Sphinx Arts
Author URI: http://www.sphinxarts.com.ar/
Short Name: extra_registry
*/



// INSTALANDO EL PLUGIN - INSTALLING THE PLUGIN
osc_register_plugin(osc_plugin_path(__FILE__), 'extra_call_after_install') ;

// AÑADE LINK PARA DESINSTALAR - UNINSTALL LINK
osc_add_hook(osc_plugin_path(__FILE__) . "_uninstall"'extra_call_after_uninstall');

// AGREGAMOS EL CAMPO EN EL FORMULARIO DE REGISTRO - ADDING FIELDS TO REGISTRY FORM
osc_add_hook('user_register_form''extra_form');

// To add that new information to our custom table
osc_add_hook('user_register_completed''extra_form_post');

// INSTALAR EL PLUGIN - INSTALL PLUGIN
function extra_call_after_install() {
    
// Insert here the code you want to execute after the plugin's install
    // for example you might want to create a table or modify some values
 
    // In this case we'll create a table to store the Example attributes
    
$conn getConnection() ;
    
$conn->autocommit(false);
    try {
        
$path osc_plugin_resource('extra_registry/struct.sql');
        
$sql file_get_contents($path);
        
$conn->osc_dbImportSQL($sql);
        
$conn->commit();
    } catch (
Exception $e) {
        
$conn->rollback();
        echo 
$e->getMessage();
    }
    
$conn->autocommit(true);
}

//DESINTALAR EL PLUGIN - UNINSTALL PLUGIN
function extra_call_after_uninstall() {
    
// Insert here the code you want to execute after the plugin's uninstall
    // for example you might want to drop/remove a table or modify some values
 
    // In this case we'll remove the table we created to store Example attributes
    
$conn getConnection() ;
    
$conn->autocommit(false);
    try {
        
$conn->osc_dbExec("DELETE FROM %st_plugin_category WHERE s_plugin_name = 'extra_registry'"DB_TABLE_PREFIX);
        
$conn->osc_dbExec('DROP TABLE %st_extra_registry'DB_TABLE_PREFIX);
        
$conn->commit();
    } catch (
Exception $e) {
        
$conn->rollback();
        echo 
$e->getMessage();
    }
    
$conn->autocommit(true);
}

// INCLUIMOS LOS CAMPOS EXTRA AL FORMULARIOD E REGISTRO
include_once 'extra_form.php';

?>

Y este es mi campo adicional, el que quiero que se muestre en el registro, que se llama "extra_form.php":

Code: [Select]
<h3><?php _e('Datos de la empresa:''extra_cuit') ; ?></h3>
<p>Ingrese el n&uacute;mero de CUIT de su empresa sin s&iacute;mbolos, comas o letras.</p>
<table>
    <tr>
        <?php
            
// This lines prevent to clear the field if the form is reloaded
            
if( Session::newInstance()->_getForm('extra_cuit') != '' ) {
                
$detail['extra_cuit'] = Session::newInstance()->_getForm('extra_cuit');
            }
        
?>

        <td><label for="make"><?php _e('CUIT:''extra_cuit'); ?></label></td>
     <td><input type="text" name="CUIT" id="extra_cuit" value="<?php if(@$detail['s_cuit'] != ''){echo @$detail['s_cuit']; } ?>" size="11" /></td>
    </tr>
</table>

Y por las dudas, este es mi "struc.sql":

Code: [Select]
CREATE TABLE /*TABLE_PREFIX*/t_extra_registry ( fk_i_item_id INT UNSIGNED NOT NULL, s_cuit VARCHAR(11), PRIMARY KEY (fk_i_item_id), FOREIGN KEY (fk_i_item_id) REFERENCES /*TABLE_PREFIX*/t_item (pk_i_id) ) ENGINE=InnoDB DEFAULT CHARACTER SET 'UTF8' COLLATE 'UTF8_GENERAL_CI';

Me parece que la forma de incluir mi archivo "extra_form.php" no está correcta...

¿Me podrás dar una manito?

¡Desde ya mil gracias al que sepa!


« Last Edit: November 22, 2011, 05:02:27 am by Sphinx »

Juan Ramón

  • Osclass Developer
  • Hero Member
  • *****
  • Posts: 2382
Re: Agregar campos al formulario de registro
« Reply #4 on: November 22, 2011, 03:23:11 pm »
Sería algo así:

Code: [Select]
<?php
/*
Plugin Name: Extra Registry
Plugin URI: http://www.sphinxarts.com.ar/
Description: This plugin extends fields in the user registry form, like CUIT, RUT, etc.
Version: 1.0
Author: Sphinx Arts
Author URI: http://www.sphinxarts.com.ar/
Short Name: extra_registry
*/



// INSTALANDO EL PLUGIN - INSTALLING THE PLUGIN
osc_register_plugin(osc_plugin_path(__FILE__), 'extra_call_after_install') ;

// AÑADE LINK PARA DESINSTALAR - UNINSTALL LINK
osc_add_hook(osc_plugin_path(__FILE__) . "_uninstall"'extra_call_after_uninstall');

// AGREGAMOS EL CAMPO EN EL FORMULARIO DE REGISTRO - ADDING FIELDS TO REGISTRY FORM
osc_add_hook('user_register_form''extra_form');

// To add that new information to our custom table
osc_add_hook('user_register_completed''extra_form_post');

// INSTALAR EL PLUGIN - INSTALL PLUGIN
function extra_call_after_install() {
    
// Insert here the code you want to execute after the plugin's install
    // for example you might want to create a table or modify some values
 
    // In this case we'll create a table to store the Example attributes
    
$conn getConnection() ;
    
$conn->autocommit(false);
    try {
        
$path osc_plugin_resource('extra_registry/struct.sql');
        
$sql file_get_contents($path);
        
$conn->osc_dbImportSQL($sql);
        
$conn->commit();
    } catch (
Exception $e) {
        
$conn->rollback();
        echo 
$e->getMessage();
    }
    
$conn->autocommit(true);
}

//DESINTALAR EL PLUGIN - UNINSTALL PLUGIN
function extra_call_after_uninstall() {
    
// Insert here the code you want to execute after the plugin's uninstall
    // for example you might want to drop/remove a table or modify some values
 
    // In this case we'll remove the table we created to store Example attributes
    
$conn getConnection() ;
    
$conn->autocommit(false);
    try {
        
$conn->osc_dbExec("DELETE FROM %st_plugin_category WHERE s_plugin_name = 'extra_registry'"DB_TABLE_PREFIX);
        
$conn->osc_dbExec('DROP TABLE %st_extra_registry'DB_TABLE_PREFIX);
        
$conn->commit();
    } catch (
Exception $e) {
        
$conn->rollback();
        echo 
$e->getMessage();
    }
    
$conn->autocommit(true);
}

// INCLUIMOS LOS CAMPOS EXTRA AL FORMULARIOD E REGISTRO
function extra_form() {
    include_once 
'extra_form.php';
}

// Hacemos los inserts apropiados despues del POST
function extra_form_post($userID) {
    
}

?>

fijate que uso dos funciones:
    - function extra_form: para hacer el include
    - function extra_form_post: donde tendrás que hacer el INSERT en DB

Sphinx

  • Newbie
  • *
  • Posts: 35
Re: Agregar campos al formulario de registro
« Reply #5 on: November 23, 2011, 09:46:19 pm »
@Juan Ramón:

En la tabla creada para guardar los números de CUIT debo guardar también a qué userID corresponde cada CUIT????? Es decir, mi tabla debe tener 2 campos: CUIT y userID??? o solamente el campo CUIT ya basta para que identifique a cada CUIT con su usuario??

Juan Ramón

  • Osclass Developer
  • Hero Member
  • *****
  • Posts: 2382
Re: Agregar campos al formulario de registro
« Reply #6 on: November 25, 2011, 02:43:46 pm »
No, deberías guardar también el userID para saber a que usuario pertenece cada CUIT.

Perot

  • Newbie
  • *
  • Posts: 7
Re: Agregar campos al formulario de registro
« Reply #7 on: January 31, 2013, 09:52:13 pm »
Hola Juan Ramón y Sphinx,
gracias por el script. En la cooperativa integral catalana estábamos pensando en una función similar para nuestros asociados en el portal que queremos poner en marcha en breve.
Imagino que para adaptarlo a nuestra necesidad basta con cambiar "extra_form" por "loquesea_form". ¿Quizás no sea necesario?
También preguntar si es posible crear una verificación adicional para comprobar que el código de socio es correcto, tipo:

<?php
function elCodi($codices)
            {
                return(preg_match("/^((coop|exma|amar)+([0-9]{4}))$/","$codices"));
            }
?>

¿Habría que ponerlo en el index.php? Por ejemplo:

<?php
function loquesea_form() {
    include_once 'loquesea_form.php';
}
function elCodi($codices)
            {
                return(preg_match("/^((coop|exma|amar)+([0-9]{4}))$/","$codices"));
            }
?>

En loquesea_form.php:


            <?php
                 $codices    = '';
                 
            if(isset($_POST['send']))
            {
                 $codices    = $_POST['codices'];

                if(trim($codices) == '')
                {
                    $error = '<div class="errormsg">Has oblidat escriure el teu codi CES!</div>';
                }
                else if(!elCodi($codices))
                {
                    $error = '<div class="errormsg">El teu codi CES no és vàlid, intenta-ho de nou!</div>';
                } ;
            }

            if(!isset($_POST['send']) || $error != '')

            {
           =$error;?>

<label for="loquesea"><?php _e('Loquesea', 'modern') ; ?></label> <?php UserForm::loquesea_text(); }?><br />


¿Es correcto?

Muchas gracias.

aprendiz1

  • Newbie
  • *
  • Posts: 1
Re: Agregar campos al formulario de registro
« Reply #8 on: March 11, 2013, 05:19:07 am »
Hola amigos como veran soy aprendiz y no se programar, utilizo solo plugins leo manuales y me voy informando , actualmente estoy desarrollando una pagina en wampserver para posteriormente subirla,  mi problema entre varios otros es el agregar formulario registro rut, ya que tengo un pagina real estate que estoy modificando, si existiera otra forma por mysql u otra opcion estaria muy agradecido.