Tiempo lectura: 2 min. 42 s.

Nomenclatura avanzada

Nomenclatura avanzada para entender el sistema de templating de Adtopy.

Para entender cómo funciona el sistema de templating de Adtopy, es importante conocer ciertas cosas avanzadas de la nomenclatura.

Conceptos avanzados

Para ello, vamos a dividir dicha nomenclatura en los siguientes apartados:

Variables dentro de cada componente

Está compuesto por la siguiente sintáxis:

[*NOMBRE_WIDGET({"nombre_variable":"$variable_php"})]componentes y contenido[#]

Para que las variables se pasen entre widgets, para intercambio de información, recorrido de en estructuras de datos, etc., es importante que la $variable_php se haya calculado antes.

Para ello, el código tiene que ser generado antes de la llamada. Ejemplo:

# Codigo ejemplo que guardamos en '$data' la $variable_php vista anteriormente

<?php
$job: new model\web\Jobs();
$job->job_id: $params->job_id;
$job->loadFromFields();
$data: json_decode($job->results, true);
?>

Y la llamada dentro del código .wid sería así:

[*:/ELEMENT/TYPES/_ARRAY({"data":"$data"})][#]

Es importante ver, que las variables puede ser llamadas por valor o por referencia. Para más información, visitar 2–parametros-por-referencia-yo-valor.

Parametros por referencia y/o valor

Las variables (parámetros), pueden ser pasados entre widgets .wid por por valor o por referencia. La diferencia es que:

  • Por VALOR: Se crea cada widget que usa dicha variable, una copia local. Por lo que, el ámbito y uso queda relegado al contexto de sólo ese widget. $variable_php
  • Por REFERENCIA: La variable, se comparte entre widgets, de forma que el contexto y ámbito es global a cada widget que quiera usarlo. Uso común para iteradores. &$variable_php

Veamos un ejemplo de pasar un parámetro por referencia:

# Parámetro por referencia
[*:/ELEMENT/TYPES/_ARRAY({"data":"$data","it":"&$iterator"})][#]

# Parámetro por valor
[*:/ELEMENT/TYPES/_ARRAY({"data":"$data","it":"$iterator"})][#]

En la variable $it estará almacenado el valor de la variable pasada por referencia &$iterator. Para así, en el contexto del widget deseado, poder usar $it.

Traducción para cadenas de texto

Si se quiere usar traducciones dentro de los widgets, la nomenclatura para ello sería usar [@L] para crear una referencia en la base de datos, que ese cadena es “traducible”.

# Traducción para cadenas de texto
[_LABEL][@L]Aceptar[#][#]

Usar php dentro de una plantilla .wid

Se puede usar código php dentro de una plantilla .wid, tan simple cómo incluir <?php ?> dentro de la plantilla .wid sería suficiente. Veamos un ejemplo de código mezclando todo lo anterior:

# Código php dentro de una plantilla .wid

<?php
$serializer=\Registry::getService("storage")->getSerializerByName('web');
$currentPage=Registry::$registry["currentPage"];
$params=$currentPage->getPageParams();
?>
[*:JOB_LIST_DS_TABLE({"currentPage":"$currentPage","object":"/model/web/Jobs","dsName":"FullList","serializer":"$serializer","params":"$params","iterator":"&$iterator"})]
    [_:HEADER]
        [_:TITLE]Listado de trabajos[#]
        [_:DESCRIPTION]Tabla que muestra por fila los resultados de cada trabajo para la tarea ComScore.[#]
        [_:ICONO]statics[#]
    [#]
    [_:LISTING]
        [_:COLUMNHEADERS]
            [_:COLUMN][_:LABEL]ID[#][#]
            [_:COLUMN][_:LABEL]Trabajo[#][#]
            [_:COLUMN][_:LABEL]Tipo[#][#]
            [_:COLUMN][_:LABEL]Estado[#][#]
            [_:COLUMN][_:LABEL]Creado[#][#]
            [_:COLUMN][_:LABEL]Actualizado[#][#]
        [#]
        [_:ROWS]
            [_:ROW][_:VALUE][*::/ELEMENT/TYPES/AutoIncrement({"name":"id_job","model":"$iterator"})][#][#][#]
            [_:ROW][_:VALUE][*::/ELEMENT/TEXT/LINK][_::LINK_URL]/JobDetail/<?php echo $iterator->job_id;?>/view[#][_::LINK_TEXT]<?php echo $iterator->job_id;?>[#][#][#][#]
            [_:ROW][_:VALUE][*::/ELEMENT/TYPES/_String({"name":"name","model":"$iterator"})][#][#][#]
            [_:ROW][_:VALUE][*::/ELEMENT/TYPES/Integer_Job_Status({"name":"status","model":"$iterator"})][#][#][#]
            [_:ROW][_:VALUE][*::/ELEMENT/TYPES/DateTime({"name":"created_at","model":"$iterator"})][#][#][#]
            [_:ROW][_:VALUE][*::/ELEMENT/TYPES/DateTime({"name":"updated_at","model":"$iterator"})][#][#][#]
        [#]
    [#]
[#]
Última modificación: March 19, 2020