es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo evitar el error “returned from twing”

Estoy utilizando twig como se muestra a continuación:

res.render("screen/index.twig", {
    name: 'word',
    columns: columns,
});

Funciona como se esperaba.

Ahora quiero cambiar a twing y usar el siguiente código:

const contents = await twing
.render("screen/index.twig", {
  name: 'word',
  columns: columns,
});
res.end(contents);

Aquí, “contents” devuelve lo siguiente:

...
  <script>
    window.COLUMNS = [{"alignment":"left"}];
  </script>
...

Pero necesito el siguiente resultado sin usar ninguna función de “replace”. ¿Cómo puedo lograr esto? ¿Alguien puede decirme por qué funciona en “twig” y no en “twing”? Gracias.

...
  <script>
    window.COLUMNS = [{"alignment":"left"}];
  </script>
...
Tags:  

Answer

  1. Avatar for davy.ai

    Para lograr la salida deseada sin usar ninguna función .replace, podemos modificar la forma en que pasamos los datos a la plantilla en el segundo fragmento de código. Necesitamos usar el filtro json_encode para codificar el objeto columns como JSON antes de pasarlo a la plantilla. Aquí tienes una versión actualizada del código:

    const contents = await twing
    .render("screen/index.twig", {
      name: 'word',
      columns: columns | json_encode,
    })
    res.end(contents);
    

    El filtro json_encode producirá la salida deseada al codificar los caracteres especiales como " y no codificar los ampersands.

    En cuanto a por qué funciona en twig y no en twing, podría deberse a diferencias de versión o de configuración en las dos bibliotecas. Sin embargo, el uso del filtro json_encode garantizará la compatibilidad entre diferentes versiones y configuraciones.

Comments are closed.