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 crear un nuevo filtro en Twig

Estoy usando el siguiente código para crear un nuevo filtro en twig

const twig = require("twig");
twig.extendFilter("date_format", (value) => {
  return value ? dateFNS.format(value.unixUTC, "MM/dd/yyyy") : null;
});

De manera similar, ¿cómo podemos crear un nuevo filtro en twing?

He intentado con el siguiente método

const { TwingFilter, TwingEnvironment, TwingLoaderFilesystem } = require("twing");
const format_date = new TwingFilter("format_date", (value) => {
  return value ? dateFNS.format(value.unixUTC, "MM/dd/yyyy") : null;
});
const loader = new TwingLoaderFilesystem([
  "./screen"
]);
const twing = new TwingEnvironment(loader);
twing.addFilter(format_date);

Pero está dando el siguiente error

TypeError: callable.apply(...).catch is not a function
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para crear un nuevo filtro en Twing, necesitas crear una nueva instancia de TwingFilter y añadirla al objeto TwingEnvironment utilizando el método addFilter.

    Aquí tienes un ejemplo de código que crea un nuevo filtro format_date en Twing:

    const { TwingEnvironment, TwingLoaderFilesystem } = require("twing");
    const dateFNS = require("date-fns");
    
    const loader = new TwingLoaderFilesystem(["./views"]);
    const twing = new TwingEnvironment(loader);
    
    twing.addFilter(new TwingFilter("format_date", (value) => {
      return value ? dateFNS.format(value.unixUTC, "MM/dd/yyyy") : null;
    }));
    
    // Ahora puedes usar el filtro en tus plantillas de esta forma:
    // {{ some_date_variable|format_date }}
    

    Asegúrate de instalar el paquete date-fns como dependencia en tu proyecto.

    El error que estás encontrando puede ser debido a la falta de la palabra clave async antes del cuerpo de la función de flecha. Asegúrate de definir tu función de flecha con la palabra clave async de esta forma:

    const format_date = new TwingFilter("format_date", async (value) => {
      return value ? dateFNS.format(value.unixUTC, "MM/dd/yyyy") : null;
    });
    

    Esto debería resolver el problema de TypeError.

Comments are closed.