Widget Select

El widget select, o WidgetSelect, permite mostrar valores que están relacionados con otras tablas (o con la misma). Un ejemplo muy sencillo es un selector de país.

<column name="country" numcolumns="2" order="150">
    <widget type="select" fieldname="codpais" required="true">
        <values source="paises" fieldcode="codpais" fieldtitle="nombre"/>
    </widget>
</column>

Estas son las propiedades disponibles en la etiqueta widget:

  • fieldname: nombre del campo que contiene la información. Obligatorio.
  • required: impide guardar los datos del formulario si el usuario no ha escrito nada en el campo.
  • readonly: impide modificar el valor.
  • onclick: URL o controlador al que será redirigido el usuario al hacer clic. A esta URL se le añade ?code= y el valor del campo.
  • icon: icono a mostrar en el campo de edición.
  • translate: true para indicar que se traduzcan automáticamentelos títulos de los valores a mostrar al usuario.

Definición de la clase: puede ver la lista completa de propiedades y métodos del widget select en la documentación de la clase WidgetSelect.

Opciones de coloreado: recuerde que todos los widgets tienen una serie de propiedades y opciones comunes.

Valores a mostrar

Podemos mostrar los valores de una tabla concreta, valores fijos o incluso podemos añadir valores manualmente desde el controlador.

Valores de una tabla

<widget type="select" fieldname="codpais" required="true">
    <values source="paises" fieldcode="codpais" fieldtitle="nombre"/>
</widget>
  • source: nombre de la tabla a consultar. También podemos poner el nombre de un modelo, por ejemplo Proveedor.
  • fieldcode: columna de la tabla para el valor seleccionado. Si en source se ha escrito el nombre de un modelo, esta columna es opcional.
  • fieldtitle: columna de la tabla para el texto a mostrar al usuario.
    • Si no se indica fieldtitle, se usa fieldcode.
    • Si en source se ha escrito el nombre de un modelo, esta columna es opcional.
    • Si se ha indicado translate en el widget, este texto se traducirá.

Valores fijos

<widget type="select" fieldname="actualizastock" translate="true" required="true">
    <values title="book">-2</values>
    <values title="subtract">-1</values>
    <values title="do-nothing">0</values>
    <values title="add">1</values>
    <values title="foresee">2</values>
</widget>

Añadir valores desde el controlador

Si necesitamos cargar una lista muy concreta de valores en un widget select, podemos usar el método setValuesFromArray():

$column = $this->views[VIEW_NAME]->columnForName(NAME_DE_LA_COLUMNA_EN_EL_XMLVIEW);
if($column && $column->widget->getType() === 'select') {
    $customValues = [
        ['value' => '1', 'title' => 'UNO'],
        ['value' => '2', 'title' => 'DOS'],
        ['value' => '3', 'title' => 'TRES'],
        ['value' => '14', 'title' => 'CATORCE'],
    ];
    $column->widget->setValuesFromArray($customValues);

    // si entre los valores quieres que esté null, mejor ejecuta eso
    //$column->widget->setValuesFromArray($customValues, false, true);
}

¿El widget está en un modal? Si el select está en un modal, entonces hay que reemplazar la primera línea por esta:

$column = $this->views[VIEW_NAME]->columnModalForName(NAME_DE_LA_COLUMNA_EN_EL_XMLVIEW);

Sustituir VIEW_NAME por el nombre de la vista/pestaña que sea, y NAME_DE_LA_COLUMNA_EN_EL_XMLVIEW por el name de la columna que contiene el widget en el archivo xmlview.

Con CodeModel

También podemos usar la clase CodeModel para obtener los valores y cargarlos en el widget. Por ejemplo, vamos a cargar una lista con los clientes y su número de teléfono, y entonces usar el método setValuesFromCodeModel():

$column = $this->views[VIEW_NAME]->columnForName(NAME_DE_LA_COLUMNA_EN_EL_XMLVIEW);
if($column && $column->widget->getType() === 'select') {
    $customValues = $this->codeModel->all('clientes', 'codcliente', 'telefono1');
    $column->widget->setValuesFromCodeModel($customValues);
}

Siguiente

Necesita identificarse para continuar con esta acción. Haga clic en iniciar sesión o cree una cuenta.

Iniciar sesión
PRO
neorazorx_1
neorazorx_1

España, 9 años, nivel 100

Widget (XMLView)

Patrocinadores

FacturaScripts avanza más rápido gracias al apoyo financiero de los patrocinadores, que contribuyen a que podamos dedicar más tiempo al desarrollo, testeo y documentación. Usted también puede poner su granito de arena y convertirse en patrocinador ;-)

ORO
elurk_3992
ORO
luis_12743
ORO
compras_1706
ORO
oibafnarud_87
PLATA
acaselles_13670
PLATA
civernet_11724
PLATA
clinicastillo_1549
PLATA
seguialbert_13135
PLATA
jmdeanca_13364
PLATA
administrador_14566
PLATA
microtechsat001_3168
PLATA
inform_12089
BRONCE
ldardon_11876
BRONCE
rexmaris_12857
BRONCE
flecamas_12738
BRONCE
petrolboxip_12082
PRO
neorazorx_1
PRO
civernet_11724
PRO
prebac_1378
PRO
jmoreno_2610
PRO
estrategicos_11919
PRO
daniel89fg_739
Patrocinar

Amplíe sus conocimientos con los cursos oficiales

Curso básico de programación

Con este curso aprenderá cómo crear un plugin sencillo para FacturaScripts 2021: añadir nuevas páginas, tablas y columnas. Para entender este curso no se necesita mucha experiencia en programación, le enseñaremos los básico para modelar problemas sencillos. ¿A quién va dirigido? A cualquier persona con unos conocimientos muy básicos de programación. ¿Qué incluye? 18 lecciones con 14 vídeos explicativos.

283 9,99 €
Sesiones de programación

Esta es una recopilación de vídeos y documentación de pequeños desarrollos sobre FacturaScripts y sus plugins. Perfecto para expandir tus conocimientos de programación. ¿A quién va dirigido? A personas que ya hayan superado el curso básico de programación y busquen ampliar sus conocimientos. ¿Qué incluye? 15 lecciones con 15 vídeos explicativos (más de 6 horas de vídeos) y el código fuente de los ejemplos. Novedades mensuales: Este curso se amplía cada mes con nuevas lecciones.

67 19,99 €
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.

Copyright (c) 2013-2022 FacturaScripts

Soporte