Ergebnis 1 bis 18 von 18

Thema: Werte aus Datensatz an Formular übergeben

  1. #1
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard Werte aus Datensatz an Formular übergeben

    Hi Community,

    ich möchte gerne bestimmte Werte eines Datensatzes aus Meta-Models an ein Formularfeld übergeben, was sich nach dem Klick auf einen Link im Attribut Anmelden öffnet.

    Der Link "Anmelden" ist im Attribut URL hinterlegt und sieht wie folgt aus:

    {{link_url::16}}?kurs={{mm::detail::Tag}}

    Durch die Erweiterung inputvar, rufe ich im auf Seite 16 eingebetteten Formular den Wert vom Feld kurs ab.

    Problem: es wird kein Wert aus dem Feld Tag (Attribut aus dem Datensatz im MetaModel) angezeigt.

    Verwende ich den Link manuell, also bspw. {{link_url::16}}?kurs=TESTWERT, erscheint im jeweiligen Formularfeld TESTWERT. Aus der Richtung klappt es zumindest schonmal.
    Aber wie schaffe ich es, dass bestimmte Werte aus dem Datensatz übergeben werden?
    Weiterhin wird der Link im neuen Fenster geöffnet. Muss ich das bei MM irgendwo definieren?

    VG, Daniel
    Geändert von danielx11 (08.01.2018 um 17:23 Uhr)

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    hier die aktuellen Inserttags https://github.com/MetaModels/core/b...gs.php#L34-L49

    bei "{{mm::detail::Tag}}" - woher soll die Auflösung des Inserttags "wissen" um welches MM es sich handelt?

  3. #3
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    hier die aktuellen Inserttags https://github.com/MetaModels/core/b...gs.php#L34-L49

    bei "{{mm::detail::Tag}}" - woher soll die Auflösung des Inserttags "wissen" um welches MM es sich handelt?
    Nach meiner Vorstellung (habe das erste Mal mit MM zu tun) über die ID des Datensatzes, der in dem Link übergeben wird. Aber ich höre heraus, dass ich noch das MM nennen muss?
    bspw. mm_kursliste ansstatt {{mm::... –*korrekt? Aber wie erhalte ich dann die Zuordnung des Datensatzes?

  4. #4
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    ich arbeite eher weniger mit MM-Inserttags aber das https://github.com/MetaModels/core/b...gs.php#L44-L45 würde ich z.B. so interpretieren

    PHP-Code:
    mm::attribute::[MM Name|ID]::[Item ID]::[Attribute Name|ID](::[Output raw|text|html|..]) 
    =>

    PHP-Code:
    {{link_url::16}}?kurs={{mm::attribute::mm_mein_mm::42::Tag::text}} 
    wenn Dein
    * MM mm_mein_mm
    * Item/Datensatz-ID 42
    * Attributname Tag

    ist

  5. #5
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Moin Zonky,

    vielen Dank! Das klappt nun. Der Tag wird jetzt im Formular angezeigt.
    Nur wie schaffe ich es, dass er die ID des Datensatzes automatisch erkennt?

  6. #6
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von danielx11 Beitrag anzeigen
    Nur wie schaffe ich es, dass er die ID des Datensatzes automatisch erkennt?
    ... was soll ich mehr dazu schreiben als "Du musst es ihm sagen"

    Keine Ahnung "wo" du bist, was für eine Seite, welche Aufrufe, URLs, Filter, MMs - Gegenfrage: welche Farbe haben meine Arbeitsschuhe?

  7. #7
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ... was soll ich mehr dazu schreiben als "Du musst es ihm sagen"

    Keine Ahnung "wo" du bist, was für eine Seite, welche Aufrufe, URLs, Filter, MMs - Gegenfrage: welche Farbe haben meine Arbeitsschuhe?
    Weiß?

    Welche Infos brauchst du genau? Im Grunde ist es ein sehr einfaches MM mit einer Liste von Kursen. Ich versuche einfach mal ein paar mehr Details zu liefern, hoffe die helfen weiter:

    Attribute:

    Tag (Text)
    Einstiegszeitpunkt (Text)
    Uhrzeit (Text)
    Anmeldung (Url)
    Veröffentlicht (Checkbox / hidden)

    Die URL führt zu einer Seite mit einem Kontaktformular. Aktuell über folgenden Link:
    {{link_url::16}}?kurs={{mm::attribute::mm_kids_4_b is_6::1::tag::text}}

    Das Formular hat den folgenden Wert im Feld Nachrichten:
    {{get::kurs}} und gibt zur Zeit den Tag des Datensatzes mit der ID 1 aus. Der Get-Wert wird mit Unterstützung der Erweiterung Inputvars ermöglicht.

    Die MM haben nur einen Filter zum Verstecken nicht veröffentlichter Datensätze (Attribut Veröffentlich / Checkbox).

    Aus meiner Sicht (ich bin kein PHP-Fachmann) brauche ich eine Varibale, in der die ID des jeweiligen Datensatzes gespeichert wird o. ä. – hier klemmt es halt
    {{link_url::16}}?kurs={{mm::attribute::mm_kids_4_b is_6::1::tag::text}}

    Hilft das weiter um eine Lösung zu finden?

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    hmm... soweit ich das verstehe hast Du

    * eine Seite mit einer MM-Liste
    * möchtest von einem/jedem Item aus der Liste einen Link zu der Formularseite mit dem Parameter "kurs"

    - richtig?

  9. #9
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    hmm... soweit ich das verstehe hast Du

    * eine Seite mit einer MM-Liste
    * möchtest von einem/jedem Item aus der Liste einen Link zu der Formularseite mit dem Parameter "kurs"

    - richtig?
    Ja das ist korrekt. Sodass eben auf der Formularseite entsprechende Werte aus dem Datensatz bereits vorausgefüllt enthalten sind.
    Szenario: Besucher klickt auf "Anmelden" zum Kurs in Zeile 3, gelangt auf die Seite mit dem Formular in dem die Details zum Kurs bereits eingetragen sind.

  10. #10
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von danielx11 Beitrag anzeigen
    Besucher klickt auf "Anmelden" zum Kurs in Zeile 3, ..
    ... was auch immer "Zeile 3" sein mag?!?

    mehrere Möglichkeiten...

    z.B.

    * in Deinem Listentemplate "metamodels_prerendered" mal das eingeben http://metamodels.readthedocs.io/de/...templates.html - dann siehst Du, was im Template alles ankommt...
    * Template für Link anpassen z.B. {{link_url::16}}?kurs=<?= $arrItem['raw']['id'] ?>

    dann hast Du die URL domain.tld/meine-seite/mit-formular.html?kurs=42

    den GET-Parameter "42" kannst Du dann als Kursnummer in dein Formular übernehmen

  11. #11
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    ... was auch immer "Zeile 3" sein mag?!?
    War nur zum signalisieren, dass es ein spezifischer Datensatz sein soll

    Zitat Zitat von zonky Beitrag anzeigen
    mehrere Möglichkeiten...

    z.B.

    * in Deinem Listentemplate "metamodels_prerendered" mal das eingeben http://metamodels.readthedocs.io/de/...templates.html - dann siehst Du, was im Template alles ankommt...
    Ok das läuft. Alle nötigen Daten werden angezeigt, darunter auch die ID.

    Zitat Zitat von zonky Beitrag anzeigen

    * Template für Link anpassen z.B. {{link_url::16}}?kurs=<?= $arrItem['raw']['id'] ?>

    dann hast Du die URL domain.tld/meine-seite/mit-formular.html?kurs=42

    den GET-Parameter "42" kannst Du dann als Kursnummer in dein Formular übernehmen
    Ok hier komme ich nicht ganz mit. Wo genau kommt der Link {{link_url::16}}?kurs=<?= $arrItem['raw']['id'] ?> rein?
    Testweise habe ich den Link so in der Spalte URL auf "Anmelden" (MM Liste) gelegt. Übergeben wird dann im Anmelde-Formular der Seite 16 nur <?= $arrItem['raw']['id'] ?> (und genau so, statt id steht keine Nummer)
    Geändert von danielx11 (09.01.2018 um 08:12 Uhr)

  12. #12
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von danielx11 Beitrag anzeigen
    Wo genau kommt der Link {{link_url::16}}?kurs=<?= $arrItem['raw']['id'] ?> rein?
    an die richtige Stelle!

    woher soll ich das wissen!?! ich sehe weder Dein FE noch postest Du Dein Template - mit den homöopathischen Dosen an Informationen kann doch keiner was anfangen

  13. #13
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Sag mir einfach was du brauchst, bin dir dankbar.
    Sorry wenn ich nicht an die eine oder andere wichtige Info gedacht habe. Da fehlt mir ein wenig die Verbindung zu dem Bereich.

    Hier die Templates:

    metamodel_prerendered_custom.html5 (FE Kurse)

    PHP-Code:
    <?php
    echo "<!-- DEBUG START \n";
    echo 
    "<pre>\n";
    print_r($this->items->parseAll($this->getFormat(), $this->view));
    echo 
    "</pre>\n";
    echo 
    "\n DEBUG ENDE -->";
    ?>

    <?php if (count($this->data)): ?>

    <div class="layout_full">

    <?php foreach ($this->data as $arrItem): ?>
    <?php $this
    ->block('item'); ?>
    <div class="item <?= $arrItem['class'?>">

    <?php foreach ($arrItem['attributes'] as $field => $strName): ?>
    <?php 
    if ((isset($arrItem[$this->getFormat()][$field]) && ($strValue $arrItem[$this->getFormat()][$field])
        || (isset(
    $arrItem['text'][$field]) && ($strValue $arrItem['text'][$field])))): ?>
    <div class="field <?= $field ?>">
    <?php if (!$this->view->get('hideLabels')): ?>
    <div class="label"><?= sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $strName?></div>
    <?php endif; ?>
    <div class="value"> <?= $strValue ?></div>
    </div>
    <?php endif; ?>
    <?php 
    endforeach; ?>
    <?php $this
    ->block('actions'); ?>
    <div class="actions">
    <?php foreach($arrItem['actions'] as $action): ?>
    <?php $this
    ->insert('mm_actionbutton', ['action' => $action]); ?>
    <?php 
    endforeach; ?>
    </div>
    <?php $this->endblock(); ?>
    </div>
    <?php $this->endblock(); ?>
    <?php 
    endforeach; ?>
    </div>
    <?php else : ?>
    <?php $this
    ->block('noItem'); ?>
    <p class="info"><?= $this->noItemsMsg ?></p>
    <?php $this->endblock(); ?>
    <?php 
    endif; ?>

    ce_metamodel_list_custom.html5

    PHP-Code:
    <?php $this->extend($this->searchable 'block_searchable' 'block_unsearchable'); ?>

    <?php $this->block('content'); ?>
    <div class="labels">
        <div class="columnHead">
            <div class="headTag">Tag</div>
            <div class="headEinstieg">Einstieg möglich am</div>
            <div class="headUhrzeit">Uhrzeit</div>
            <div class="headAnmeldung clearfix">Anmeldung</div>
        </div>
    </div>
    <?= $this->items ?>
    <?= $this
    ->pagination ?>
    <?php $this
    ->endblock(); ?>
    Screenshot FE bei MM
    Bildschirmfoto 2018-01-09 um 11.32.34.png
    Geändert von danielx11 (09.01.2018 um 10:33 Uhr)

  14. #14
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.719
    User beschenken
    Wunschliste

    Standard

    PHP-Code:
    <?php if (count($this->data)): ?>

    <div class="layout_full">

    <?php foreach ($this->data as $arrItem): ?>
    <?php $this
    ->block('item'); ?>
    <div class="item <?= $arrItem['class'?>">

    <?php foreach ($arrItem['attributes'] as $field => $strName): ?>
    <?php 
    if ((isset($arrItem[$this->getFormat()][$field]) && ($strValue $arrItem[$this->getFormat()][$field])
        || (isset(
    $arrItem['text'][$field]) && ($strValue $arrItem['text'][$field])))): ?>
    <div class="field <?= $field ?>">
    <?php if (!$this->view->get('hideLabels')): ?>
    <div class="label"><?= sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $strName?></div>
    <?php endif; ?>
    <div class="value"> <?= $strValue ?></div>
    </div>
    <?php endif; ?>
    <?php 
    endforeach; ?>

    <a href="{{link_url::16}}?kurs=<?= $arrItem['raw']['id'?>">zum Formular...</a>

    <?php $this->block('actions'); ?>
    <div class="actions">
    <?php foreach($arrItem['actions'] as $action): ?>
    <?php $this
    ->insert('mm_actionbutton', ['action' => $action]); ?>
    <?php 
    endforeach; ?>
    </div>
    <?php $this->endblock(); ?>
    </div>
    <?php $this->endblock(); ?>
    <?php 
    endforeach; ?>
    </div>
    <?php else : ?>
    <?php $this
    ->block('noItem'); ?>
    <p class="info"><?= $this->noItemsMsg ?></p>
    <?php $this->endblock(); ?>
    <?php 
    endif; ?>
    so ggf.

  15. #15
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    PHP-Code:
    <?php if (count($this->data)): ?>

    <div class="layout_full">

    <?php foreach ($this->data as $arrItem): ?>
    <?php $this
    ->block('item'); ?>
    <div class="item <?= $arrItem['class'?>">

    <?php foreach ($arrItem['attributes'] as $field => $strName): ?>
    <?php 
    if ((isset($arrItem[$this->getFormat()][$field]) && ($strValue $arrItem[$this->getFormat()][$field])
        || (isset(
    $arrItem['text'][$field]) && ($strValue $arrItem['text'][$field])))): ?>
    <div class="field <?= $field ?>">
    <?php if (!$this->view->get('hideLabels')): ?>
    <div class="label"><?= sprintf($GLOBALS['TL_LANG']['MSC']['field_label'], $strName?></div>
    <?php endif; ?>
    <div class="value"> <?= $strValue ?></div>
    </div>
    <?php endif; ?>
    <?php 
    endforeach; ?>

    <a href="{{link_url::16}}?kurs=<?= $arrItem['raw']['id'?>">zum Formular...</a>

    <?php $this->block('actions'); ?>
    <div class="actions">
    <?php foreach($arrItem['actions'] as $action): ?>
    <?php $this
    ->insert('mm_actionbutton', ['action' => $action]); ?>
    <?php 
    endforeach; ?>
    </div>
    <?php $this->endblock(); ?>
    </div>
    <?php $this->endblock(); ?>
    <?php 
    endforeach; ?>
    </div>
    <?php else : ?>
    <?php $this
    ->block('noItem'); ?>
    <p class="info"><?= $this->noItemsMsg ?></p>
    <?php $this->endblock(); ?>
    <?php 
    endif; ?>
    so ggf.
    Danke! Perfekt, die ID wird nun im Formular ausgegeben.
    Was mache ich hier falsch wenn ich den Link wie folgt anpasse:

    PHP-Code:
    <a href="{{link_url::16}}?kurs=<?= $arrItem['raw']['id']['tag'?>">zum Formular...</a>
    Ich möchte weitere Felder mitausgeben. Bspw. den Tag dieses Datensatzes.
    Geändert von danielx11 (09.01.2018 um 10:48 Uhr)

  16. #16

  17. #17
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Damit hätte ich kein Problem. Ist das denn noch ein größerer Aufwand? Wie gesagt, ich bin kein PHP-Profi, aber habe das Gefühl dass da nicht mehr viel zum gewünschten Resultat fehlt und der Auftragnehmer wahrscheinlich länger braucht um die Rechnung zu schreiben.
    Geändert von danielx11 (09.01.2018 um 11:03 Uhr)

  18. #18
    Contao-Nutzer
    Registriert seit
    03.01.2011.
    Beiträge
    97

    Standard

    Für alle die auf das gleiche Problem stoßen – so klappt es:

    PHP-Code:
    <a href="{{link_url::16}}?kurs=<?= $arrItem['raw']['id'?>&tag=<?= $arrItem['raw']['tag'?>">Anmelden</a>
    Und dann entsprechend per Inputvar die weiteren Felder ausgeben lassen.

    Danke nochmal für deine Hilfe Zonky.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •