# Felhasználói adatok a PDF-ben

> Felhasználói meta mezők (például telefonszám) átadása a generált PDF-nek: kiválasztott felhasználóval és a bejelentkezett felhasználóval.

Ez a fejezet két esetet mutat be, amikor a PDF-be a felhasználók mentett adatai kerülnek:

1. **Bárki** (a nem bejelentkezett látogató is) kiválaszt egy felhasználót a listából, és a PDF a kiválasztott felhasználó adatait tartalmazza.
2. A **bejelentkezett felhasználó** saját adatai kerülnek a PDF-be.

## Előfeltételek

- Aktív **JetEngine** és **JetFormBuilder**, valamint a **PDF Attachment** bővítmény.
- A második esethez a **Formless Actions Endpoints** bővítmény is kell, aktívan.
- A felhasználókhoz meta mezők (meta box) tartoznak, kitöltött értékekkel. A példában egy meta boxban két **Text** meta mező van: `customer_phone` és `customer_meta`. A felhasználói profilokat a JetEngine User Profile Builderével lehet kialakítani.

## Kódrészlet hozzáadása

Illeszd be az alábbi kódot a sablon `functions.php` fájljába, vagy egy kódrészlet-kezelő bővítménybe (például WPCode Lite, Code Snippets), majd mentsd.

```php
add_action( 'jet-form-builder/before-do-action/generate_pdf', function () {

    $user_id = get_current_user_id();

    if ( ! $user_id ) {
        return;
    }

    jet_fb_context()->update_request(
        get_user_meta( $user_id, 'customer_phone', true ),
        'customer_phone'
    );

    jet_fb_context()->update_request(
        get_user_meta( $user_id, 'customer_meta', true ),
        'customer_meta'
    );

} );
```

A kód a **Generate PDF** művelet lefutása előtt a bejelentkezett felhasználó meta mezőit beteszi az űrlap adatai közé, így a sablonban makróval használhatók. A `customer_phone` és a `customer_meta` helyére a saját meta mezőid nevét írd. Ha több adatot szeretnél, vegyél fel még egy `update_request` blokkot a megfelelő meta mezővel.

## 1. eset: kiválasztott felhasználó adatai a PDF-ben

### Az űrlap

1. Nyisd meg a **JetFormBuilder → Add New Form** oldalt, töröld az üdvözlő blokkot, és adj nevet az űrlapnak (a példában „users”).
2. Szúrj be egy **Select Field**et.
3. A blokk beállításai között a **FIELD LABEL** legyen „customer” (a **FORM FIELD LABEL** magától kitöltődik).
4. A **FILL OPTIONS FROM** listából válaszd a **Generate Dynamically** értéket, a **GENERATOR FUNCTION** listából pedig a **Get values list from WordPress Users** értéket. Így a lista a webhely felhasználóiból áll.
5. A **Post Submit Actions** részben add hozzá a **Save Form Record** műveletet, majd a **New Action** gombbal a **Generate PDF** műveletet.
6. Az **Edit Generate PDF** ablakban, ha még nincs sablon, kattints az **Add new template** gombra.
7. A sablonszerkesztőben add meg a sablon nevét, és a **[/]** (**Insert JetFormBuilder macros**) gombbal illeszd be ugyanazokat a mezőket, amelyek a meta boxban vannak (a példában a `customer_phone` és a `customer_meta` értékét). Kattints a **Mentés** gombra, zárd be a szerkesztőt, és térj vissza az űrlaphoz. A sablon neve megjelenik a **SELECT PDF TEMPLATE** mezőben.
8. A **FILE NAME** mezőt töltsd ki, vagy a csavarkulccsal válassz mezőt. A példa a **%_template_name%** makrót használja.
9. Kapcsold be a **Save generated PDF** kapcsolót. A hibaüzeneteket átírhatod vagy meghagyhatod, majd kattints az **Update** gombra.
10. Szúrj be egy **Action Button**t az űrlapba, és közzétedd az űrlapot.

Itt csak a **Save Form Record** és a **Generate PDF** műveletet használtuk. Ha szeretnéd, a **Send Email** művelettel elküldheted a PDF-et, vagy a **Redirect to Page** művelettel átirányíthatsz egy másik oldalra.

### Oldal és kipróbálás

1. Hozz létre egy oldalt, tedd rá a **JetForm** widgetet (blokkot, elemet), a **Choose Form** listában válaszd ki az űrlapot, és mentsd az oldalt.
2. A weboldalon válaszd ki a kívánt felhasználót, és küldd be az űrlapot.
3. A **JetFormBuilder → Form Records** oldalon nyisd meg a beküldés rekordját. A jobb alsó sarokban a **Generated PDF** résznél a **View** hivatkozással megnyithatod a PDF-et, az **Edit** hivatkozással szerkesztheted. A **Label & Name** alatti útvonalat a böngészőbe másolva is megnézheted.

## 2. eset: a bejelentkezett felhasználó adatai a PDF-ben

### Az űrlap

1. Hozz létre új űrlapot (a példában „generate pdf”), töröld az üdvözlő blokkot, és szúrj be két **Hidden Field**et és egy **Action Button**t.
2. A két rejtett mező neve legyen `customer_phone`, illetve `customer_meta`. Mindkettőnél a **FIELD VALUE** legyen **Manual Input**, a **VALUE** mezőbe pedig a meta mező neve kerüljön (`customer_phone`, `customer_meta`).
3. A **Post Submit Actions** részben add hozzá a **Save Form Record**, majd a **Generate PDF** műveletet. Válaszd ki ugyanazt a sablont, és szükség szerint módosítsd.
4. Az **Update** gombbal zárd be az ablakot.

### Végpont

1. Nyisd meg a **JetFormBuilder → Endpoints** oldalt, és kattints az **Add new route** gombra.
2. A **JetFormBuilder Actions Endpoint** ablak **Settings** részében a **RELATED FORM** mezőben válaszd ki az előbbi űrlapot.
3. Az **ACTION TYPE** értéke legyen **WordPress AJAX**. Ekkor megjelenik az **AJAX ACTION SLUG** mező: írd be például, hogy `generate-current-user-pdf`.
4. A **Data Fields** résznél kattints a **Sample request** fülre, majd a **Copy data for the request** gombbal másold ki a mintakérést: az oldalon használt gomb kéréséhez kell.
5. Kattints az **Update** gombra.

### Oldal

Nyiss meg egy oldalt a kedvenc szerkesztődben, alakítsd ki, és tegyél rá egy gombot (a példában az Elementor **Button** widgetje), amely a másolt mintakérést küldi.

### Kipróbálás

A menet ugyanaz, mint az első esetben. Jelentkezz be, kattints a gombra: ha a beküldés sikerült, a „Form successfully submitted.” szöveg jelenik meg. A **JetFormBuilder → Form Records** oldalon a beküldés rekordjában megtalálod a PDF-et.

## Gyakori kérdések

**Generálhat PDF-et bejelentkezés nélkül is a látogató?**
Igen. Az első megoldásban bárki, a kijelentkezett látogató is kiválaszthat egy felhasználót a listából, és a PDF a felhasználó meta adatait tartalmazza.

**Hozzáadhatok több felhasználói meta mezőt a PDF-hez?**
Igen. Vedd fel a meta mezők nevét és értékét a kódrészletbe, és illeszd be a megfelelő makrókat a PDF-sablonba.

**Mire valók a rejtett mezők a bejelentkezett felhasználós megoldásban?**
Megjelenített beviteli mezők nélkül viszik át az űrlapon a szükséges meta mezők nevét. Az értékük így elérhető a PDF készítésekor.

**Mire való a Formless Actions Endpoint?**
Lehetővé teszi, hogy a PDF-et készítő művelet WordPress AJAX-kéréssel induljon el. Így a bejelentkezett felhasználó adataival készíthető PDF látható űrlapmezők nélkül.
