Preguntes freqüents

Pregunta 1. Com fer multidioma la meua aplicació?

Dins del directori lang existeixen tres fitxers d'idiomes:

  • - esp.conf → castellà
  • - val.conf → valencià
  • - eng.conf → anglés

Són fitxers de text, amb parells:

Per exemple:

  • variable = "etiqueta"
    • smty_labelNombre = "Nombre Responsable"
    • smty_labelUbicacion = "Ubicación"

En la tpl cal fer referència a aqueixes variables definides en els fitxers de configuració d'idiomes:

Pregunta 2. Quina és la diferència entre el paràmetre "visible" i "ocult" en un camp?

El paràmetre "ocult" solament té sentit quan el camp és un camp de text perquè es tradueix en un camp "hidden" de html.

El paràmetre "visible" permet tindre el control del camp des de codi ( setVisible(boolean) ), i fer-ho visible o no depenent d'altres dades.

 

Pregunta 3. On he de desactivar els missatges de consola de Javascript?

La configuració d'activar o no el log de JS de l'aplicació es fa en el fitxer de configuració de l'aplicació, externo..gvHidraConfig.inc.xml, ams la propietat logJSSettings.

Pregunta 4. Vull que la meua llista desplegable es autocomplete.

Solament has d'afegir el paràmetre "autocomplete" en la tpl al plugin cwlista.

Pregunta 5. Vull afegir estils propis en la meua aplicació. On he de situar el fitxer css?

En el directori css de l'aplicació existeix el fitxer appStyle.css que és el que s'ha d'utilitzar per a incloure estils propis de l'aplicació.

Pregunta 6. Necessite acolorir les files d'un panell tabular depenent del valor d'un camp

En el mètode postBuscar(), o en el postRecargar() en el cas que el panell siga un detall, utilitzarem la funció $objDatos→setRowColor($tupla,$color);

Per exemple:

Pregunta 7. Ús del checkbox en la classe manejadora

En definir un checkbox en el constructor de la classe *manejadora, es defineix el valor assignat a la casella de selecció quan aquest està *chequeado i quan no ho està.

$check1 = new gvHidraCheckBox('check1');
$check1->setValueChecked('S');
$check1->setValueUnchecked('N');
$this->addCheckBox($check1);

El valor que se li assigna a un estat és el que s'utilitzarà en mètodes per a comprovacions, *sql..., serà el valor associat a aqueix camp, i consegüentment, obtindre el valor d'una casella de selecció es realitza amb el mètode setValue()
$objDatos->getValue("check1");   =>  Retornarà el valor "S" en el cas que estiga *chequeado, i "N" quan no ho estiga
 

D'altra banda, treballar amb un checkbox des d'una acció d'interfície, amb això el que es necessita és que canvie l'estat visual de la casella de selecció en la pantalla.

Això no significa que la casella de selecció canvie el seu valor, sinó que la casella de selecció el *chequeas o no depenent del valor que vulgues que tinga, per tant el mètode és *setChecked() passant-li un *true/*false segons necessites.

Exemple:

$objDatos->setChecked("check1",true);   => El camp "*check1" tindrà el valor "S" i visualment apareixerà marcat.
$objDatos->setChecked("check1",false); => El camp "*check1" tindrà el valor "N" i visualment NO apareixerà marcat

Pregunta 8. Diferencia acció "buscar" des de menuModulos vs acció "buscar" des del botó buscar del panell filtre.

  • "buscar" des de botó del filtre:
    Quan busquem des d'un panell filtre, ja estem en el panell filtre, ja tenim definits els camps, valors per defecte i definicions.
    Per tant s'executarà la sql definida en el constructor aplicant el where dels valors assignats als camps del panell (valors per defecte i valors ja introduïts per l'usuari)

    {cwboton iconCSS="glyphicon glyphicon-search" label="Buscar" class="button" accion="buscar" mostrarEspera="true"}

     
  • "buscar" des de menuModulos:
    Quan en menuModulos es defineix l'accés a una pantalla amb l'acció "buscar", cal entendre que no s'ha accedit al panell filtre, se salta directament al panell tabular o fitxa amb el resultat.
    El framework executa la sql definida, però sense l'assignació de valors per defecte perquè no s'arriba a accedir al panell, no arriba a existir. En el cas que es vulga establir algunes condicions en aquesta consulta
    sense passar pel panell filtre, s'han de realitzar en el preBuscar(). Per a això es pot definir una variable en l'enllaç des de menú que indique q s'accedeix des del menú, i llavors assignar els valors que es necessiten per defecte.

    <opcion imagen="menu/menu.gif" titulo="Ej. Registre" descripcion="Manteniment de Registro" url="phrame.php?action=Registro__buscar&acceso=MENU"/>

    public function preBuscar($objDatos)
    {
        $acceso = $objDatos->getValue('acceso');
        if ($acceso == 'MENU')
        {
            // Sabemos que se ha accedido a la pantalla desde el menú
            // Fijamos los valores que se necesiten tener por defecto
            $objDatos->setValue('fil_DNI', '12111222X');
        }
        else {
            // Sabemos que se ha accedido desde el panel búsqueda
            // Se han definido los valores por defecto con addDefaultData(), o setSelected() en el caso de las listas
        }
        return 0;
    }

     

 

Pregunta 9. Vull que la where de la cerca em permeta buscar sense posar el text complet

gvHidra crea una cadena que afig al WHERE de la consulta del panell amb les dades que ha introduït l'usuari des de la manera de cerca. Aquesta cadena es pot formar de tres formes diferents, depenent del valor que se li passe al mètode setQueryMode().

El que cal tindre en compte és que en cap de les opcions es distingeix per majúscules/minúscules ni per accents o altres caràcters especials:

  • Valor 0: Es construeix la WHERE igualant els camps als valors
    Format: camp = valor
  • Valor 1: Es construeix la WHERE utilitzant l'operador LIKE
    Format: camp LIKE %valor%
  • Valor 2: Es construeix la WHERE igualant els camps als valors sempre que aquests no continguen el caràcter % o _, i en aquest cas s'utilitzarà el *LIKE.


    NOTA: gvHIDRA té marcat per defecte el valor 2 per a executar les consultes.

 

Pregunta 10. Des del mètode que dispara l'acció d'interfície, com puc saber quin ha sigut el camp que la llança?

El camp disparador de l'acció d'interfície ho podem obtindre amb el següent mètode:

$campoDisparador = $objDatos->getTriggerField();

Pregunta 11. Vull personalitzar la css de la cerca avançada (versions 5.1.x)

El selector que engloba la cerca avançada és el següent: .gvh-querybuilder

D'altra banda, per a personalitzar la botonera:Operadors:

Per a poder assignar un estil als botons "I" / "O" del cercador avançat. 

  • Selector per a botó activat: .group-conditions.btn-group >label.active
Exemple
.group-conditions.btn-group > label.active {
    background-color: red;
}
  • Selector per a botó desactivat: .group-conditions.btn-group >label
Exemple
.group-conditions.btn-group > label {
    background-color: #db985b;
}
  • Selector per a hover sobre els botons .group-conditions.btn-group:hover > label
Exemple
.group-conditions.btn-group:hover > label {
    background-color: #ffd2e9;;
}
Botó NO
  • Selector: .gvh-querybuilder .btn-group > .btn:first-child:not(.btn-danger)  
                  .gvh-querybuilder .btn-group > .btn:first-child:hover:not(.btn-danger)
Exemple
.gvh-querybuilder .btn-group > .btn:first-child:not(.btn-danger) {
    background-color: #ffd2e9;
}
Botó INVERTIR
  • Selector: .rules-group-header > button.btn-default 
                  .rules-group-header > button.btn-default:hover
Exemple
.rules-group-header > button.btn-default:hover {
    background-color: #ff7d7d;
    color: #fff;
}

Pregunta 12 - Vull que el panell de cerca romanga sempre visible

L'estat d'un panell ve definit pel paràmetre estado del plugin cwpanel, per tant si es vol que el panell cerca sempre estiga visible, en la tpl el paràmetre estat ha de tindre el valor "on"

{cwpanel aneu="fil" action="buscar" estat="on" claseManejadora="claseM"}

Pregunta 13 - En un patró FIL-LIS-EDI, si la cerca només retorna un registre. Es pot anar directament al panell EDI?

Sí, per a això existeix el actionForward "gvHidraSuccessOne', que s'ha d'afegir en el mappings.php per a l'acció "buscar".

$this->_AddForward('ClaseManejadora__buscar', 'gvHidraSuccessOne', 'index.php?view=views/App/p_ClaseManejadora.php&panel=editar');

 

Pregunta 14 - Tinc una llista dependent d'un camp, si el camp no té valor, no em mostra tots els resultats

Quan es defineix la dependència d'una llista (mètode setDependence($listasCamposTpl, $listasCamposBD, $tipoDependencia)), cal indicar de manera obligatòria dos paràmetres, que són:

  • $listasCamposTpl: És un vector amb els noms dels camps dels quals depén.
  • $listasCamposBD: Vector amb els noms dels camps de la *BD corresponents amb els indicats en el paràmetre anterior (tots dos vectors han de tindre el mateix ordre)
  • $tipoDependencia: Podrà prendre el valor 0, en el cas que es necessite que la dependència de la llista siga forta, i 1 en el cas que es vulga que siga feble. El cas de la dependència feble, el que farà és que si el camp dependent no té valor, l'ignorarà.


Per tant, si el que es vol és que no faça cas de la dependència quan el camp dependent no té valor, cal posar el *tipoDependencia=1, així mostrarà totes les opcions de la llista.

NOTA: gvHIDRA té marcat per defecte el valor 0 per a executar les dependències de les llistes.