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 acceder al atributo de datos HTML con Twig?

No estoy seguro si esto es posible, pero tengo un enlace con atributos de datos ‘data-form-recipient’ establecidos por objetos Json:

<a class="callback-form" href="#location-form" id="contact-us-recipient" data-form-recipient="${myCustomLayers.properties.locationRecipient}">

Cuando intento obtener los datos de esto con JS, parece que todo está bien y me da las direcciones de correo electrónico que quiero:

var elem = document.getElementById('contact-us-recipient');
var recipient = elem.getAttribute('data-form-recipient');
console.log(recipient);

El problema es que necesito accederlo con Twig porque esto es para una notificación dinámica de Freeform (Craft 3), en este contexto:

{% set form = craft.freeform.form("contactLocation", {
    dynamicNotification: { recipients: [
        recipient
    ], template: "locationContactTmp" }
}) %}

Donde ‘recipient’ debe ser mi valor de ‘data-form-recipient’. ¿Esto es posible y cómo se hace? Gracias

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible acceder al valor de data-form-recipient en Twig. Puedes utilizar la función craft.app.request.getParam() para obtener el valor del atributo data en tu controlador o plantilla. Aquí tienes un ejemplo:

    {% set recipient = craft.app.request.getParam('data-form-recipient') %}
    
    {% set form = craft.freeform.form("contactLocation", {
        dynamicNotification: {
            recipients: [
                recipient
            ],
            template: "locationContactTmp"
        }
    }) %}
    

    En el ejemplo anterior, estamos utilizando la función craft.app.request.getParam() para obtener el valor del atributo data-form-recipient y almacenándolo en la variable recipient. Luego utilizamos esta variable en el array de destinatarios dynamicNotification del formulario Freeform.

Comments are closed.