Adding Form and Field Validations - ES: Difference between revisions

From IHRIS Wiki
(Created page with "<p>Al editar un formulario en iHRIS, este puede realizar validaciones a los datos. Por ejemplo, puede marcar un campo como requerido o único. También puede utilizar una lógica...")
 
No edit summary
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<p>Al editar un formulario en iHRIS, este puede realizar validaciones a los datos. Por ejemplo, puede marcar un campo como requerido o único. También puede utilizar una lógica más complicada para verificar que esta establecida correctamente. Por ejemplo, que la fecha de inicio de un puesto no se da despues de la fecha de finalización. Este artículo describe cómo agregar validaciones personalizadas para formularios y campos.
Al editar un formulario en iHRIS, este puede realizar validaciones a los datos. Por ejemplo, puede marcar un campo como requerido o único. También puede utilizar una lógica más complicada para verificar que está establecida correctamente. Por ejemplo, que la fecha de inicio de un puesto no se da después de la fecha de finalización. Este artículo describe cómo agregar validaciones personalizadas para formularios y campos.
</p><p>Este documento se refiere a iHRIS 4.0.9 y después.
 
</p><p>En algunos casos podría necesitar validaciones adicionales en formularios y campos que ya existen o agregar validaciones a campos y formularios nuevos que ueste creando. Esto puede hacerlo utilizando ganchos en el módulo de su sitio en el módulo de personalización de formularios y campos que ha creado.
Este documento se refiere a iHRIS 4.0.9 y posteriores.
</p><p>Puede agregar una validación a un solo campo o hacer el formulario completo para comparar múltiples campos. El primer paso es crear los ganchos en la clase del módulo.   
 
</p>
En algunos casos podría necesitar validaciones adicionales en formularios y campos que ya existen o agregar validaciones a campos y formularios nuevos que este creando. Esto puede hacerlo utilizando ganchos en el módulo de su sitio en el módulo de personalización de formularios y campos que ha creado.
<h2> Crear la clase del modulo </h2>
 
<p>Puede crear ganchos en el código de la clase para su módulo. Este archivo estará en la ruta de la clase (generalmente ./lib) para su módulo.
Puede agregar una validación a un solo campo o hacer el formulario completo para comparar múltiples campos. El primer paso es crear los ganchos en la clase del módulo.   
</p>
 
<h3> Agreggar una Clase de Módulo </h3>
== Crear la Clase del Módulo ==
<p>Si su módulo no tiene una clase, sera necesario agregar una. Puede agregar el nodo className a los archivos de configuración de los metadatos en su módulo (o sitio) .
 
</p><p><span class="fck_mw_source" lang="xml">fckLR    &lt;className&gt;iHRIS_Module_$moduleName&lt;/className&gt;fckLR</span>
Puede crear ganchos en el código de clase de su módulo. Este archivo estará en la ruta de clases (usually ./lib) de su módulo.
</p><p>You would replace <b>$moduleName</b> with a unique name for your module classFor example, in the iHRIS Manage Person Position module, the following class is used:
 
</p><p><span class="fck_mw_source" lang="xml">fckLR  &lt;metadata&gt;fckLR    &lt;displayName&gt;iHRIS Manage Person Position&lt;/displayName&gt;fckLR    &lt;className&gt;iHRIS_Module_PersonPosition&lt;/className&gt;fckLR    ...fckLR  &lt;/metadata&gt;fckLR</span>
=== Agregar una Clase del Módulo ===
</p>
 
<h3> Create the PHP Class File </h3>
Si su módulo actualmente no tiene una clase tendrá que agregar una. Puede agregar el nodo className al archivo de configuración de metadata en su módulo (o sitio).
<p>Then in the module classes directory (./lib) you would create the file iHRIS_Module_<b>$moduleName</b>.php, replacing <b>$moduleName</b> with the class name you entered in the configuration file.
 
</p><p><span class="fck_mw_source" lang="bash">fckLRgedit ./lib/iHRIS_Module_$moduleName.phpfckLR</span>
<source lang="xml">
</p><p>You should fill in additional comments, but the default blank file (which we'll fill out later).
    <className>iHRIS_Module_$moduleName</className>
</p><p><span class="fck_mw_source" lang="php">fckLR/**fckLR * Class iHRIS_Module_$moduleNamefckLR *fckLR * @access publicfckLR */fckLRclass iHRIS_Module_$moduleName extends I2CE_Module {fckLRfckLR}fckLR# Local Variables:fckLR# mode: phpfckLR# c-default-style: &quot;bsd&quot;fckLR# indent-tabs-mode: nilfckLR# c-basic-offset: 4fckLR# End:fckLR</span>
</source>
</p>
 
<h3> Add the getHooks Method </h3>
Reemplazaría  '''$moduleName''' con un nombre único para su clase del móduloPor ejemplo en el módulo  Person Position  de iHRIS Manage, se utiliza la clase siguiente:
<p>Now we need to define the getHooks method which tells the module factory which hooks this module supportsIf your module already had a class then you would only need to add the getHooks method to the existing codeIf it already has a getHooks method then skip this step and go to &lt;a href="#Adding_the_Hooks"&gt;Adding the Hooks&lt;/a&gt;.
 
</p><p><span class="fck_mw_source" lang="php">fckLRclass iHRIS_Module_$moduleName extends I2CE_Module {fckLRfckLR    /**fckLR    * Return the array of hooks available in this module.fckLR    * @return arrayfckLR    */fckLR    public static function getHooks() {fckLR        return array(fckLR              );fckLR    }fckLRfckLR}fckLR</span>
<source lang="xml">
</p><p>This is simply a place holder until we add in the actual hooks we want to define. Those will go in the array that is being returned.
  <metadata>
</p>
    <displayName>iHRIS Manage Person Position</displayName>
<h2> Adding the Hooks </h2>
    <className>iHRIS_Module_PersonPosition</className>
<p>There are two types of hooks that can be addedA field validation (for one field) and a form validation (for multiple fields).
    ...
</p>
  </metadata>
<h3> Adding a Field Validation Hook </h3>
</source>
<p>For field hooks, you use the form and field names:  valdate_form_<b>$form</b>_field_<b>$field</b>You replace <b>$form</b> and <b>$field</b> with theFor example the iHRIS Common Person Contact module adds a validation hook for the contact email field as: validate_form_<b>contact</b>_field_<b>email</b>Now we add this hook to the getHooks method as an associative array with the value being the method in the module class to be called to validate the fieldThe method name can be anything, for clarity we will use the same name as the hook.
 
</p><p>We will also create this method so it can be called by the module factory when the hook is calledIt takes a single form field object as an argument.
=== Cree el Archivo de Clase PHP ===
</p><p><span class="fck_mw_source" lang="php">fckLR    public static function getHooks() {fckLR        return array(fckLR              'validate_form_$form_field_$field' =&gt; 'validate_form_$form_field_$field',fckLR              );fckLR    }fckLRfckLR    /**fckLR    * Validate the $field in the $form form.fckLR    * @param I2CE_FormField $formfieldfckLR    */fckLR    public function validate_form_$form_field_$field( $formfield ) {fckLR    }fckLR</span>
 
</p><p>In this method you will perform any checks necessary and if it fails then you will need to call setInvalidMessage on the $formfield.  See the &lt;a _fcknotitle="true" href="Using Translateable Invalid Messages"&gt;Using Translateable Invalid Messages&lt;/a&gt; for how to define the messages in a way that allows for multiple translations.  This is the example function from the iHRIS Common Person Contact module.
Luego en el directorio de clases del módulo (./lib) crearía el archivo iHRIS_Module_'''$moduleName'''.php, reemplazando '''$moduleName''' con el nombre de clase que puso en el archivo de configuración.
</p><p><span class="fck_mw_source" lang="php">fckLR    /** fckLR    * Validate the email field for contact forms.fckLR    * @param I2CE_FormField $formfieldfckLR    */fckLR    public function validate_form_contact_field_email( $formfield ) { fckLR        $value = $formfield-&gt;getValue();fckLR        if ( I2CE_Validate::checkString( $value ) fckLR                &amp;&amp;&#160;!I2CE_Validate::checkEmail( $value ) ) { fckLR            $formfield-&gt;setInvalidMessage('invalid_email');fckLR        fckLR    fckLR</span>
 
</p>
<source lang="bash">
<h3> Adding a Form Validation Hook </h3>
gedit ./lib/iHRIS_Module_$moduleName.php
<p>Adding a validation hook for a form is very similar to adding a validation hook for a fieldThe hook name will be:  validate_form_<b>$form</b>You replace <b>$form</b> with the form name you wish to validateFor example, the person_position form has a validation hook called:  validate_form_<b>person_position</b>You add this hook to the getHooks method just like for field validationThe method will take a single argument of the form object being validated.
</source>
</p><p><span class="fck_mw_source" lang="php">fckLR    public static function getHooks() {fckLR        return array(fckLR              'validate_form_$form' =&gt; 'validate_form_$form',fckLR              );fckLR    }fckLRfckLR    /**fckLR    * Validate the $form form.fckLR    * @param I2CE_Form $formfckLR    */fckLR    public function validate_form_$form( $form ) {fckLR    }fckLR</span>
 
</p><p>In this method you can check the values of multiple fields and call setInvalidMessage for any fields that don't validateSee the &lt;a _fcknotitle="true" href="Using Translateable Invalid Messages"&gt;Using Translateable Invalid Messages&lt;/a&gt; for how to define the messages in a way that allows for multiple translations. This is an example from the iHRIS Manage Person Position module that validate the person_position form by comparing the start and end dates to make sure the end date is after the start date.
Debería llenar todos los comentarios adicionales, excepto el archivo en blanco por defecto (el que llenaremos después).
</p><p><span class="fck_mw_source" lang="php">fckLR    /**fckLR    * Checks to make sure the end date is after the start date for the person position.fckLR    * @param I2CE_Form $formfckLR    */fckLR    public function validate_form_person_position( $form ) {fckLR        if ( $form-&gt;start_date-&gt;isValid() &amp;&amp; $form-&gt;end_date-&gt;isValid() ) {fckLR            if ( $form-&gt;start_date-&gt;compare( $form-&gt;end_date ) &lt; 1 ) {fckLR                $form-&gt;setInvalidMessage('end_date','bad_date');fckLR            }fckLR        }fckLR    }fckLR</span>
 
</p>&lt;a _fcknotitle="true" href="Category:Tutorial"&gt;Tutorial&lt;/a&gt; &lt;a _fcknotitle="true" href="Category:Forms"&gt;Forms&lt;/a&gt; &lt;a _fcknotitle="true" href="Category:Review2013"&gt;Review2013&lt;/a&gt; &lt;a _fcknotitle="true" href="Category:Needs_Intro"&gt;Needs_Intro&lt;/a&gt;
<source lang="php">
/**
* Class iHRIS_Module_$moduleName
*
* @access public
*/
class iHRIS_Module_$moduleName extends I2CE_Module {
 
}
# Local Variables:
# mode: php
# c-default-style: "bsd"
# indent-tabs-mode: nil
# c-basic-offset: 4
# End:
</source>
 
=== Agregar el Método getHooks ===
Ahora tenemos que definir en método getHooks que le dice al módulo factory que se engancha al módulo de apoyoSi su módulo ya posee una clase entonces solo tendrá que agregar el método getHooks al código existenteSi ya tiene el método getHooks entonces salte este paso y vaya a [#Adding the Hooks| Agregar los Ganchos]].
 
<source lang="php">
class iHRIS_Module_$moduleName extends I2CE_Module {
 
    /**
    * Return the array of hooks available in this module.
    * @return array
    */
    public static function getHooks() {
        return array(
              );
    }
 
}
</source>
 
Esto simplemente es un dato temporal hasta que agreguemos los ganchos reales que queremos definir. Esos irán en la colección que regresa.
 
== Agregar los Ganchos ==
 
Hay dos tipos d ganchos que se pueden agregarUna validación de campo (para un campo) y una validación de formulario (para múltiples campos).
 
=== Agregar un Gancho de Validación de Campo ===
 
Para ganchos de campo, utilice los nombres de formulario y campos:  valdate_form_'''$form'''_field_'''$field'''Reemplace '''$form''' y '''$field'''Por ejemplo el módulo Person Contact  de iHRIS Common agrega un gancho de validación para el campo de contacto de correo electrónico como:  validate_form_'''contact'''_field_'''email'''Ahora agregamos este gancho al método  getHooks como colección asociativa con el valor siendo el método en la clase del módulo a ser llamado para validar el campoEl nombre del método puede ser cualquiera, para ser claros usamos el mismo nombre que en el gancho.
 
También creamos este método para que pueda ser llamado por el módulo factory cuando el gancho sea llamadoSe necesita solo un objeto de formulario de campo como argumento.
 
<source lang="php">
    public static function getHooks() {
        return array(
              'validate_form_$form_field_$field' => 'validate_form_$form_field_$field',
              );
    }
 
    /**
    * Validate the $field in the $form form.
    * @param I2CE_FormField $formfield
    */
    public function validate_form_$form_field_$field( $formfield ) {
    }
</source>
 
En este método realizara cualquier chequeo necesario y si falla tendrá que llamar setInvalidMessage en el $formfield.  Vea el [[Using Translateable Invalid Messages]] para saber cómo definir los mensajes de manera que se permitan traducciones variadas. Esta es la función de ejemplo del módulo Person Contact de iHRIS Common.
 
<source lang="php">
    /**  
    * Validate the email field for contact forms.
    * @param I2CE_FormField $formfield
    */
    public function validate_form_contact_field_email( $formfield ) {  
        $value = $formfield->getValue();
        if ( I2CE_Validate::checkString( $value )  
                && !I2CE_Validate::checkEmail( $value ) ) {  
            $formfield->setInvalidMessage('invalid_email');
        }   
    }   
</source>
 
=== Agregar un Gancho de Validación de Formulario ===
 
Agregar un gancho de validación para un formulario es muy similar a agregar un gancho de validación para un campoEl nombre del gancho será  validate_form_'''$form'''Remplaza '''$form''' nombre del formulario que desea validarPor ejemplo, el formulario person_position tiene un gancho de validación llamado:  validate_form_'''person_position'''Se agrega este gancho al método getHooks igual que para una validación de campoEl método necesita que se valide un solo argumento del formulario.
 
<source lang="php">
    public static function getHooks() {
        return array(
              'validate_form_$form' => 'validate_form_$form',
              );
    }
 
    /**
    * Validate the $form form.
    * @param I2CE_Form $form
    */
    public function validate_form_$form( $form ) {
    }
</source>
 
En este método puede revisar los valores de múltiples campos y llamar setInvalidMessage para cualquier campo que no valideVea el [[Using Translateable Invalid Messages]] para saber cómo definir los mensajes de manera que se permitan traducciones variadas. Esto es un ejemplo del módulo Person Position de iHRIS Manage que valida el formulario person_position al comparar la fecha de inicio y la fecha de finalización para asegurarse que la fecha de finalización sea después de la fecha de inicio.
 
<source lang="php">
    /**
    * Checks to make sure the end date is after the start date for the person position.
    * @param I2CE_Form $form
    */
    public function validate_form_person_position( $form ) {
        if ( $form->start_date->isValid() && $form->end_date->isValid() ) {
            if ( $form->start_date->compare( $form->end_date ) < 1 ) {
                $form->setInvalidMessage('end_date','bad_date');
            }
        }
    }
</source>
 
[[Category:Fields]][[Category:Spanish]]

Latest revision as of 12:59, 18 November 2013

Al editar un formulario en iHRIS, este puede realizar validaciones a los datos. Por ejemplo, puede marcar un campo como requerido o único. También puede utilizar una lógica más complicada para verificar que está establecida correctamente. Por ejemplo, que la fecha de inicio de un puesto no se da después de la fecha de finalización. Este artículo describe cómo agregar validaciones personalizadas para formularios y campos.

Este documento se refiere a iHRIS 4.0.9 y posteriores.

En algunos casos podría necesitar validaciones adicionales en formularios y campos que ya existen o agregar validaciones a campos y formularios nuevos que este creando. Esto puede hacerlo utilizando ganchos en el módulo de su sitio en el módulo de personalización de formularios y campos que ha creado.

Puede agregar una validación a un solo campo o hacer el formulario completo para comparar múltiples campos. El primer paso es crear los ganchos en la clase del módulo.

Crear la Clase del Módulo

Puede crear ganchos en el código de clase de su módulo. Este archivo estará en la ruta de clases (usually ./lib) de su módulo.

Agregar una Clase del Módulo

Si su módulo actualmente no tiene una clase tendrá que agregar una. Puede agregar el nodo className al archivo de configuración de metadata en su módulo (o sitio).

<source lang="xml">

   <className>iHRIS_Module_$moduleName</className>

</source>

Reemplazaría $moduleName con un nombre único para su clase del módulo. Por ejemplo en el módulo Person Position de iHRIS Manage, se utiliza la clase siguiente:

<source lang="xml">

 <metadata>
   <displayName>iHRIS Manage Person Position</displayName>
   <className>iHRIS_Module_PersonPosition</className>
   ...
 </metadata>

</source>

Cree el Archivo de Clase PHP

Luego en el directorio de clases del módulo (./lib) crearía el archivo iHRIS_Module_$moduleName.php, reemplazando $moduleName con el nombre de clase que puso en el archivo de configuración.

<source lang="bash"> gedit ./lib/iHRIS_Module_$moduleName.php </source>

Debería llenar todos los comentarios adicionales, excepto el archivo en blanco por defecto (el que llenaremos después).

<source lang="php"> /**

* Class iHRIS_Module_$moduleName
*
* @access public
*/

class iHRIS_Module_$moduleName extends I2CE_Module {

}

  1. Local Variables:
  2. mode: php
  3. c-default-style: "bsd"
  4. indent-tabs-mode: nil
  5. c-basic-offset: 4
  6. End:

</source>

Agregar el Método getHooks

Ahora tenemos que definir en método getHooks que le dice al módulo factory que se engancha al módulo de apoyo. Si su módulo ya posee una clase entonces solo tendrá que agregar el método getHooks al código existente. Si ya tiene el método getHooks entonces salte este paso y vaya a [#Adding the Hooks| Agregar los Ganchos]].

<source lang="php"> class iHRIS_Module_$moduleName extends I2CE_Module {

   /**
    * Return the array of hooks available in this module.
    * @return array
    */
   public static function getHooks() {
       return array(
              );
   }

} </source>

Esto simplemente es un dato temporal hasta que agreguemos los ganchos reales que queremos definir. Esos irán en la colección que regresa.

Agregar los Ganchos

Hay dos tipos d ganchos que se pueden agregar. Una validación de campo (para un campo) y una validación de formulario (para múltiples campos).

Agregar un Gancho de Validación de Campo

Para ganchos de campo, utilice los nombres de formulario y campos: valdate_form_$form_field_$field. Reemplace $form y $field. Por ejemplo el módulo Person Contact de iHRIS Common agrega un gancho de validación para el campo de contacto de correo electrónico como: validate_form_contact_field_email. Ahora agregamos este gancho al método getHooks como colección asociativa con el valor siendo el método en la clase del módulo a ser llamado para validar el campo. El nombre del método puede ser cualquiera, para ser claros usamos el mismo nombre que en el gancho.

También creamos este método para que pueda ser llamado por el módulo factory cuando el gancho sea llamado. Se necesita solo un objeto de formulario de campo como argumento.

<source lang="php">

   public static function getHooks() {
       return array(
              'validate_form_$form_field_$field' => 'validate_form_$form_field_$field',
              );
   }
   /**
    * Validate the $field in the $form form.
    * @param I2CE_FormField $formfield
    */
   public function validate_form_$form_field_$field( $formfield ) {
   }

</source>

En este método realizara cualquier chequeo necesario y si falla tendrá que llamar setInvalidMessage en el $formfield. Vea el Using Translateable Invalid Messages para saber cómo definir los mensajes de manera que se permitan traducciones variadas. Esta es la función de ejemplo del módulo Person Contact de iHRIS Common.

<source lang="php">

   /** 
    * Validate the email field for contact forms.
    * @param I2CE_FormField $formfield
    */
   public function validate_form_contact_field_email( $formfield ) { 
       $value = $formfield->getValue();
       if ( I2CE_Validate::checkString( $value ) 
               && !I2CE_Validate::checkEmail( $value ) ) { 
           $formfield->setInvalidMessage('invalid_email');
       }   
   }   

</source>

Agregar un Gancho de Validación de Formulario

Agregar un gancho de validación para un formulario es muy similar a agregar un gancho de validación para un campo. El nombre del gancho será validate_form_$form. Remplaza $form nombre del formulario que desea validar. Por ejemplo, el formulario person_position tiene un gancho de validación llamado: validate_form_person_position. Se agrega este gancho al método getHooks igual que para una validación de campo. El método necesita que se valide un solo argumento del formulario.

<source lang="php">

   public static function getHooks() {
       return array(
              'validate_form_$form' => 'validate_form_$form',
              );
   }
   /**
    * Validate the $form form.
    * @param I2CE_Form $form
    */
   public function validate_form_$form( $form ) {
   }

</source>

En este método puede revisar los valores de múltiples campos y llamar setInvalidMessage para cualquier campo que no valide. Vea el Using Translateable Invalid Messages para saber cómo definir los mensajes de manera que se permitan traducciones variadas. Esto es un ejemplo del módulo Person Position de iHRIS Manage que valida el formulario person_position al comparar la fecha de inicio y la fecha de finalización para asegurarse que la fecha de finalización sea después de la fecha de inicio.

<source lang="php">

   /**
    * Checks to make sure the end date is after the start date for the person position.
    * @param I2CE_Form $form
    */
   public function validate_form_person_position( $form ) {
       if ( $form->start_date->isValid() && $form->end_date->isValid() ) {
           if ( $form->start_date->compare( $form->end_date ) < 1 ) {
               $form->setInvalidMessage('end_date','bad_date');
           }
       }
    }

</source>